导图
1.死锁的定义
由于多个进程竞争共享资源而引起的进程不能向前推进的僵死状态称为死锁。
2.产生死锁的原因和必要条件
2.1 产生的原因
竞争共享资源且分配资源的顺序不当
2.2 必要条件
1)互斥条件
2)请求和保持条件
3)不剥夺条件
4)环路等待条件
3.处理死锁的基本方法
3.1 死锁的预防
通过破坏死锁的产生条件来保证不发生死锁----保证至少其中一个产生死锁的条件不成立:
1) 无法破坏互斥条件
2)请求和保持条件 -- 摒弃请求和保持条件。做法:要求进程一次性申请需要的全部资源,申请其他资源前释放已经占用的资源
3) 不剥夺条件 -- 摒弃不剥夺条件。做法:系统抢占被占用的资源分配给需要的进程。缺点:实现复杂,代价高
4) 环路等待条件 -- 摒弃环路等待条件。 做法:进程必须按规定的顺序申请资源。缺点:限制了新设备的增加,资源浪费,用户编程麻烦
3.2 死锁的避免
通过算法合理分配资源来保证不发生死锁----通过资源合理分配使系统处于安全状态。
什么是安全状态?能够找到一个进程执行序列,按照这个序列为每个进程分配资源,就可以保证进程资源分配和执行顺利完成,不会发生死锁
采用银行家算法分配资源可避免死锁发生,这是因为银行家算法在检测到系统剩余资源量可满足进程需求时才进行分配,避免系统进入不安全状态
3.3 死锁的检测
检测当前系统是否出现死锁。
何时调用检测算法?系统经常出现死锁时,调用检测算法可以知道死锁可能发生的频率、死锁发生时受影响的进程数量。
3.4 死锁的解除
检测到系统有死锁后进行解除。