面试题答案
一键面试破坏互斥条件
- 常见方法:允许资源共享使用,即同一时刻允许多个进程同时访问该资源。
- 原理:死锁的互斥条件是指资源在某一时刻只能被一个进程所占有。若打破此条件,让资源可共享,那么就不会因进程竞争互斥资源而产生死锁。例如,对于可重入代码,多个进程可以同时调用,不会出现因互斥访问代码段而导致死锁。
破坏占有并等待条件
- 常见方法:
- 静态分配法:进程在启动前一次性申请其所需的所有资源,只有当系统能满足进程的全部资源需求时,才将这些资源分配给该进程,进程才开始执行。
- 动态分配改进法:在进程运行过程中,若需要新资源,它必须先释放已占有的所有资源,然后重新申请包括新资源在内的所有资源。
- 原理:占有并等待条件是指进程已占有了一些资源,同时又在等待获取其他资源。静态分配法使进程在运行前就获取所有资源,避免运行中等待新资源;动态分配改进法确保进程在请求新资源时不会占有其他资源,从而破坏占有并等待条件,避免死锁。例如,一个进程需要打印机和扫描仪,静态分配法会在进程开始前就分配这两个设备;动态分配改进法下,若进程已占有打印机,要获取扫描仪,需先释放打印机,再一起申请打印机和扫描仪。
破坏不可剥夺条件
- 常见方法:当一个进程占有了某些资源,而又申请新资源但不能立即得到满足时,系统可剥夺该进程已占有的资源,分配给其他进程,待该进程能获取全部所需资源时再重新执行。
- 原理:不可剥夺条件是指进程已获得的资源,在未使用完之前,不能被其他进程强行剥夺。通过允许剥夺资源,可打破此条件。例如,在实时系统中,高优先级进程需要资源时,可剥夺低优先级进程已占有的资源,以保证高优先级进程能及时执行,避免因资源被低优先级进程长期占有而导致死锁。
破坏循环等待条件
- 常见方法:
- 资源分配图算法:通过检测系统资源分配图中是否存在环路来避免死锁。若存在环路,且环路上每个进程都在等待下一个进程所占有的资源,则发生死锁,此时可通过剥夺环路上某个进程的资源来打破环路。
- 层次分配法:将资源按某种层次顺序进行编号,进程申请资源时,必须按照资源编号从小到大的顺序申请。
- 原理:循环等待条件是指存在一组进程,它们之间形成一种首尾相接的循环等待资源关系。资源分配图算法通过检测并打破环路来破坏此条件;层次分配法使进程申请资源的顺序固定,不会形成循环等待关系,例如进程只能先申请编号小的资源,再申请编号大的资源,避免了循环等待的可能。