操作系统 死锁检测和恢复
在这种方法中,操作系统不采用任何机制来避免或防止死锁的发生。因此,系统认为死锁肯定会发生。为了摆脱死锁,操作系统会定期检查系统是否存在死锁。如果发现任何死锁,操作系统将使用一些恢复技术来恢复系统。
操作系统的主要任务是检测死锁。操作系统可以借助资源分配图来检测死锁。
在单实例资源类型中,如果系统中形成了一个循环,那么肯定会发生死锁。另一方面,在多实例资源类型图中,仅仅检测循环是不够的。我们必须通过将资源分配图转换为分配矩阵和请求矩阵对系统应用安全算法。
为了从死锁中恢复系统,操作系统可以考虑资源或进程。
对于资源
抢占资源
我们可以从资源所有者(进程)那里抢走一个资源,并把它给另一个进程,希望它能尽快完成执行并释放这个资源。选择要抢占的资源可能会有一些困难。
回滚到安全状态
系统经历了各种状态才进入死锁状态。操作系统可以将系统回滚到之前的安全状态。为此,操作系统需要在每个状态实施检查点。
一旦进入死锁状态,我们将回滚所有分配以回到之前的安全状态。
对于进程
终止进程
终止进程可以解决我们的问题,但更大的问题是决定终止哪个进程。通常,操作系统终止到目前为止完成工作量最少的进程。
终止所有进程
这不是一个可取的方法,但如果问题变得非常严重,可以实施它。终止所有进程将导致系统效率低下,因为所有进程将重新从头开始执行。