死锁检测和恢复介绍

2021年3月11日17:49:43 发表评论 838 次浏览

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

死锁检测

如果资源具有单个实例:

在这种情况下, 对于死锁检测, 我们可以运行一种算法来检查资源分配图中的周期。图中存在循环是发生死锁的充分条件。

僵局

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

如果有多个资源实例:

周期检测对于死锁检测是必要的, 但不是充分条件, 在这种情况下, 系统可能会死锁也可能不会死锁, 这取决于不同的情况。

死锁恢复

Windows之类的传统操作系统无法处理死锁, 因为死锁恢复过程既耗时又占空间。实时操作系统使用死锁恢复。

恢复方法

终止进程:终止陷入僵局的所有进程。杀死过程一个接一个。杀死每个进程后, 再次检查是否存在死锁, 请继续重复该过程, 直到系统从死锁中恢复为止。

资源抢占:资源会从死锁中涉及的进程中抢占, 抢占的资源会分配给其他进程, 因此有可能从死锁中恢复系统。在这种情况下, 系统将陷入饥饿。

参见测验僵局.

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: