在上一篇文章中, 我们讨论了防止和避免死锁。在这篇文章中, 讨论了处理死锁的死锁检测和恢复技术。
如果资源具有单个实例:
在这种情况下, 对于死锁检测, 我们可以运行一种算法来检查资源分配图中的周期。图中存在循环是发生死锁的充分条件。
在上图中, 资源1和资源2具有单个实例。有一个循环R1→P1→R2→P2。因此, 死锁已确认。
如果有多个资源实例:
周期检测对于死锁检测是必要的, 但不是充分条件, 在这种情况下, 系统可能会死锁也可能不会死锁, 这取决于不同的情况。
死锁恢复
Windows之类的传统操作系统无法处理死锁, 因为死锁恢复过程既耗时又占空间。实时操作系统使用死锁恢复。
恢复方法
终止进程:终止陷入僵局的所有进程。杀死过程一个接一个。杀死每个进程后, 再次检查是否存在死锁, 请继续重复该过程, 直到系统从死锁中恢复为止。
资源抢占:资源会从死锁中涉及的进程中抢占, 抢占的资源会分配给其他进程, 因此有可能从死锁中恢复系统。在这种情况下, 系统将陷入饥饿。
参见测验僵局.
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。