【考研】操作系统之考点——死锁(含真题讲解)

一、死锁

(一)概念

多个进程因为竞争资源造成的一种僵局,没有外力作用,这些进程都无法向前继续推进。

(二)死锁产生的根本原因

1. 系统资源分配不足;(注意,系统资源不足只会对进程造成“饥饿”,而不是造成死锁。)

2. 进程推进顺序非法。

(三)死锁产生的必要条件(4个)

1. 互斥条件 (此条件无法破坏)

2. 不可剥夺条件

3. 请求并保持条件

4. 循环等待条件 (对于死锁,此条件为必要条件)

具体解释:

1. 互斥条件:进程要求分配的资源是排他性的,即最多只能同时供一个进程使用。

2. 不可剥夺条件:进程在使用完资源之前,资源不能被强制夺走。

3. 请求并保持条件:进程占有自身本来拥有的资源并要求其他资源。

4. 循环等待条件:存在一种进程资源的循环等待链。

二、死锁的处理策略(3种)

(一)死锁预防

1. 概念:破坏产生死锁的四个必要条件中的至少一个,防止死锁。

2. (1)破坏互斥条件:某些资源只能被互斥访问,并且某些情况必须保护互斥性。

(2)破坏不可剥夺条件:进程释放已占有资源。

(3)破坏请求并保持条件:采用预先静态分配方法,即一次性分配策略,一次性申请完所需要的全部资源。

(4)破坏循环等待条件:采用资源有序分配算法,限制用户申请资源的顺序。

3. 缺点:系统的效率低,资源利用率低。

(二)死锁避免

1. 概念:在资源的动态分配中,用某种方法防止系统进入不安全状态,避免死锁。

2. 系统安全状态:系统能按某种推进顺序为每个进程分配其所需的资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利完成。见下图。

3. 银行家算法:通过计算当前资源的不同分配方式,从而预测系统是否会进入不安全状态。

可利用资源Available, 最大需求资源Max, 已分配资源Allocation, 当前需求资源Need的关系:

Need = Max - Allocation

选择一个进程P进行分配之后,新的Available = 旧的Available + P的Allocation

举例:(直接以2012年的408真题来加深理解)

【2012真题】假设5个进程 P0、 P1、 P2、 P3、 P4 共享三类资源 R1、 R2、 R3,这些资源总数分别为18、 6、 22。 T0 时刻的资源分配情况如下表所示,此时存在的一个安全序列是(           )。

A. P0, P2, P4, P1, P3                     B. P1, P0, P3, P4, P2
C. P2, P1, P0, P3, P4                     D. P3, P4, P2, P1, P0

答案:D

解答:资源总数为18,6,22。资源已分配总数相加为16,3,19。故可用资源为2,3,3。5个进程所需资源=最大资源-分配资源。故P0到P4依次为2,2,7;1,3,3;0,0,6;2,2,1;1,1,0。由于安全序列进程所需资源需在可用资源中选取,故第一个进程需选择P1或P3或P4,AC错。第一个进程为P1时,当P1运行完毕后释放它所占有的全部资源使可用资源变为6,3,6,由于P0所需资源2,2,7,故不能满足,B错。D选项中前一个进程运行完毕释放的全部资源加上剩余的可用资源均满足下一个进程所需资源。

答案链接:https://www.nowcoder.com/questionTerminal/569f6f3e2e374cf3906e8f09c4fd154a
来源:牛客网

解析:遇到此题,直接根据公式在该表旁边列出 Need,再算出新的可用资源Available,如下图。

针对D选项,安全序列为P3, P4, P2, P1, P0

进程P3,有Need(2,2,1)< (2,3,3),所以运行P3后,P3释放自身占有资源,当前可用的资源变为(2,3,3)+(2,0,4) = (4,3,7)

而P4满足Need(1,1,0)< (4,3,7),以此类推……

注意,还有一种考法:

系统有x个资源,y个进程,每个进程最多请求使用z个资源,则需满足 (z-1)y+1\leqslant x 条件才不会发生死锁。

例题1:某计算机系统中有 8 台打印机,有 K 个进程竞争使用,每个进程最多需要 3 台打印机。该系统可能会发生死锁的 K 的最小值是(      C     )。

A. 2                            B. 3                           C. 4                           D. 5

解答:直接运用公式:(3 - 1) * K <= 8,解得 K <= 4

具体解析:由于每个进程最多需要使用3台打印机,可以先给每个进程分配2台打印机,最后分配给一个资源给其中一个进程,就能避免死锁。

例题2:【2014真题】某系统有 n 台互斥使用的同类设备,3个并发进程需要 3, 4, 5 台设备,可确保系统不发生死锁的设备数 n 最小为(      B     )。

A. 9                            B. 10                           C. 11                           D. 13

解答:假设3个进程分别为A, B, C,那么需要的最大的情况为: 2, 3, 4,此时再多一个资源就可以打破死锁的环境,所以为2+3+4+1=10。

(三)死锁的检测和解除

1. 允许进程死锁,通过检测及时地判断死锁,再对其解除。

2. 检测方法:死锁定理。(若资源分配图中能找到分配满足的进程,再消去其请求边和分配边,如若最后所有边都可以被消去,即可简化,不存在死锁,反之存在死锁。)

 3. 死锁解除

(1)资源剥夺法(破坏“请求和保持条件”)

(2)撤消进程法(破坏“请求和保持条件”)

(3)进程回退法

4.  由大到小的并发性排序:死锁检测、银行家算法、资源预分配法。

三、死锁、饥饿、死循环的区别

1. 死锁:各进程相互等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。

2. 饥饿:由于长期得不到想要的资源,某进程无法向前推进的现象。

3. 死循环:某进程执行过程中一直跳不出某个循环的现象。 

  • 7
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

住在阳光的心里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值