写在前面:
- 本系列笔记主要以《计算机操作系统(汤小丹…)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
- 视频链接:操作系统(汤小丹等第四版)_哔哩哔哩_bilibili
一、死锁的检测
1、实现死锁检测的要求
当系统为进程分配资源时,若未采取任何限制性措施,则系统必须提供检测和解除死锁的手段,为此系统必须:
①保存有关资源的请求和分配信息。
②提供一种算法,以利用这些信息来检测系统是否已进入死锁状态。
2、资源分配图
系统死锁可利用资源分配图来描述,该图由表示进程的圆圈和表示一类资源的方框组成,其中方框中的一个点代表一个该类资源,请求边是由进程指向方框中的,而分配边则应始于方框中的一个点。
3、死锁定理
(1)可以利用资源分配图加以简化的方法,来检测系统处于某状态时是否为死锁状态。资源分配图简化方法如下:
①在资源分配图中找出一个既不阻塞又非独立的进程结点,在顺利的情况下运行完毕,释放其占有的全部资源,这相当于消去
的请求边和分配边,使之成为孤立的结点。
②由于释放了资源,其它被阻塞的进程可以获得资源继续运行。
③在经过一系列简化后若能消去图中的所有的边,使所有进程结点都孤立,则称该图是可完全简化的,反之是不可完全简化的。
(2)死锁定理指出:S状态为死锁状态的充分条件是当且仅当S状态的资源分配图是不可完全简化的。
二、死锁的解除
如果利用死锁检测算法检测出在系统中已发生了死锁,则应立即采取相应的措施,以解除死锁。
常采用解除死锁的三种方法是:
①抢占资源。从一个或多个进程中抢占足够数量的资源,分配给死锁进程,以解除死锁状态。
②终止(或撤消)进程。终止(或撤消)系统中的一个或多个死锁进程,直至打破循环环路,使系统从死锁状态解脱出来。
③进程回退。让一个或多个死锁进程回退到足以避免死锁的地步,这要求系统记录进程的历史信息,设置还原点。