📜  死锁检测和恢复

📅  最后修改于: 2022-05-13 01:56:11.516000             🧑  作者: Mango

死锁检测和恢复

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

死锁检测

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

在上图中,资源 1 和资源 2 具有单个实例。有一个循环 R1 → P1 → R2 → P2。所以,死锁被确认。



  • 如果有多个资源实例:
    循环检测是死锁检测的必要而非充分条件,在这种情况下,系统可能会或可能不会处于死锁状态根据不同情况而有所不同。

    死锁恢复
    传统的操作系统(如 Windows)不处理死锁恢复,因为它是一个耗时的过程。实时操作系统使用死锁恢复。

      恢复方法
    1. 杀死进程:杀死所有参与死锁的进程。一一杀戮进程。杀死每个进程后再次检查死锁,继续重复该进程,直到系统从死锁中恢复。
    2. 资源抢占:从参与死锁的进程中抢占资源,将被抢占的资源分配给其他进程,使系统有可能从死锁中恢复。在这种情况下,系统会进入饥饿状态。

      请参阅死锁测验。