死锁检测与恢复

17 Mar 2025 | 阅读 2 分钟

在此方法中,操作系统不采取任何机制来避免或阻止死锁。因此,系统认为死锁一定会发生。为了摆脱死锁,操作系统会定期检查系统是否存在死锁。如果发现任何死锁,操作系统将使用一些恢复技术来恢复系统。

操作系统的主要任务是检测死锁。操作系统可以通过资源分配图来检测死锁。


OS Deadlock Detection and Recovery

在单实例资源类型中,如果系统中存在环路,那么一定会发生死锁。另一方面,在多实例资源类型图中,仅仅检测到环路是不够的。我们需要通过将资源分配图转换为分配矩阵和请求矩阵来对系统应用安全算法。

为了从死锁中恢复系统,操作系统会考虑资源或进程。

对于资源


抢占资源

我们可以从资源的所有者(进程)那里抢占一个资源,并将其分配给另一个进程,期望它能完成执行并尽快释放该资源。但是,选择一个要抢占的资源会有点困难。

回滚到安全状态

系统会经历各种状态才能进入死锁状态。操作系统可以将系统回滚到以前的安全状态。为此,操作系统需要在每个状态实施检查点。

一旦发生死锁,我们将回滚所有分配,以回到以前的安全状态。

对于进程


终止进程

终止一个进程可以解决我们的问题,但更大的问题是决定终止哪个进程。通常,操作系统会终止一个至今为止工作量最少的进程。

终止所有进程

这不是一种推荐的方法,但如果问题变得非常严重,可以实施。终止所有进程会导致系统效率低下,因为所有进程都将从头开始重新执行。


OS Deadlock Detection and Recovery 1
下一主题内存管理介绍