死锁和饥饿
# 基本概念
# 产生死锁的原因
根本原因 就是系统能够提供的资源个数比要求该资源的进程数要少
基本原因 资源竞争和进程推进顺序不合理
# 产生死锁必要条件
- 互斥 一个资源一次只能被一个进程使用;
- 占有并等待 一个进程至少占有一个资源,并在等待另一个被其它进程占用的资源;
- 非抢占 已经分配给一个进程的资源不能被强制性抢占,只能由进程完成任务之后自愿释放;
- 循环等待 若干进程之间形成一种头尾相接的环形等待资源关系,该环路中的每个进程都在等待下一个进程所占有的资源。
# 死锁的处理方法
- 鸵鸟策略 直接忽略死锁。因为解决死锁问题的代价很高,该方案会获得更高的性能。当发生死锁时不会对用户造成多大影响,或发生死锁的概率很低,可以采用鸵鸟策略。
- 死锁预防 其实就是破坏产生死锁的四个必要条件
- 死锁避免 动态地检测资源分配状态,以确保系统处于安全状态,比如使用银行家算法,或安全序列
- 死锁解除 利用抢占(抢占它的资源) 、利用回滚(让进程回退到足以解除死锁的地步)、杀死进程
检测死锁可以检测有向图是否存在环,或者使用类似死锁避免的检测算法。
编辑 (opens new window)
上次更新: 2021/03/23, 23:05:20