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