死锁检测和恢复
在上一篇文章中,我们讨论了死锁预防和避免。在这篇文章中,讨论了处理死锁的死锁检测和恢复技术。
死锁检测
在这种情况下,对于死锁检测,我们可以运行算法来检查资源分配图中的循环。图中循环的存在是死锁的充分条件。
在上图中,资源 1 和资源 2 具有单个实例。有一个循环 R1 → P1 → R2 → P2。所以,死锁被确认。
循环检测是死锁检测的必要而非充分条件,在这种情况下,系统可能会或可能不会处于死锁状态根据不同情况而有所不同。
死锁恢复
传统的操作系统(如 Windows)不处理死锁恢复,因为它是一个耗时的过程。实时操作系统使用死锁恢复。
- 恢复方法
- 杀死进程:杀死所有参与死锁的进程。一一杀戮进程。杀死每个进程后再次检查死锁,继续重复该进程,直到系统从死锁中恢复。
- 资源抢占:从参与死锁的进程中抢占资源,将被抢占的资源分配给其他进程,使系统有可能从死锁中恢复。在这种情况下,系统会进入饥饿状态。
请参阅死锁测验。