死锁检测与恢复

在上一篇文章中,我们讨论了 防止和避免僵局 在这篇文章中,我们将讨论处理死锁的死锁检测和恢复技术。

null

死锁检测:

1.如果资源只有一个实例—— 在这种情况下,对于死锁检测,我们可以运行一个算法来检查资源分配图中的循环。图中存在循环是死锁的一个充分条件。

图片[1]-死锁检测与恢复-yiteyi-C++库

2. 在上图中,资源1和资源2有一个实例。有一个循环R1→ P1→ R2→ P2。所以,僵局得到了确认。

3.如果有多个资源实例—— 循环检测是死锁检测的必要条件,但不是充分条件。在这种情况下,系统可能处于或可能不处于死锁状态,这取决于不同的情况。

死锁恢复: Windows等传统操作系统不处理死锁恢复,因为这是一个耗时耗空间的过程。实时操作系统使用死锁恢复。

  1. 扼杀过程—— 终止死锁中涉及的所有进程。一个接一个的杀戮过程。终止每个进程后,再次检查死锁,继续重复该进程,直到系统从死锁中恢复。逐个终止所有进程有助于系统打破循环等待条件。
  2. 资源抢占—— 资源从死锁中涉及的进程中抢占,抢占的资源分配给其他进程,这样就有可能从死锁中恢复系统。在这种情况下,系统陷入饥饿状态。
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享