操作系统---死锁

1. 死锁定义

如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件,那么,该进程集合就是死锁的——《现代操作系统》

2. 四种死锁处理策略

  • 1)忽略死锁——鸵鸟算法,把头埋进沙子里,当做什么都没发生。
  • 2)检测死锁并恢复——死锁检测和死锁恢复
  • 3)死锁避免——银行家算法,仔细对资源进行分配,动态地避免死锁
  • 4)死锁预防——破环引起死锁的四个必要条件,防止死锁发生
2.1 鸵鸟算法

处理死锁最简单的办法就是忽略它,当它实际发生并影响系统运行时,手动干预,重启恢复。这是一种不是办法的办法,当死锁带来的损失比为了消除死锁而付出的代价小时,比如死锁发生几率很小或者死锁发生对用户影响很小,可以使用鸵鸟算法。比如死锁每一年发生一次,而系统每个月都会因为硬件故障、编译器错误或者操作系统故障而崩溃一次,那么就没有必要以性能损失和可用性代价去防止死锁。

2.2 死锁检测和恢复

采用这种策略系统并不会阻止死锁产生,而是当检测到死锁后采取措施进行恢复,所以关键是如何检测死锁和从死锁状态中恢复。

2.2.1 死锁检测

对于每种类型只有单一资源的情况,可以通过构造资源分配图,然后检测是否存在闭环的方法来检测死锁,当图中存在闭环时说明该环上的进程处于死锁状态。
当一种类型的资源存在多个实例时,则需要通过基于矩阵的算法进行检测。
死锁检测的关键问题在于何时去检测,一种方法是

你可能感兴趣的:(操作系统)