暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【软件评测师】考点38——进程死锁的基础知识

昊洋与你一起成长 2021-09-09
2484

进程死锁的知识是软件评测师考试的考点,经常出现在上午场的客观选择题当中。若干个进程互相竞争对方占有的资源,并无限期地等待,导致不能向前推进就是发生了死锁,死锁是系统的一种出错的状态,应该尽量预防和避免。下面就该知识点的基础知识结合例题进行总结学习。


一、概述

(1)定义:死锁是指当两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。

(2)产生原因: 供共享的系统资源不足,资源分配策略和进程的推进顺序不当。常见的情况就是同类资源分配不当引起死锁,假如系统中有m个资源被n个进程共享使用,当每个进程都要求k个资源,而m<nk,即资源数小于进程所要求的总数时,可能会引起死锁。

例如m=5,n=3,k=3,若系统采用的分配策略是轮流地为每个进程分配,则第一轮系统先为每个进程分配1台,还剩下2台;第二轮系统再为两个进程各分配1台,此时,系统中已无可供分配的资源,使得各个进程都处于等待状态而导致系统发生死锁。

在考试的时候一般会求使得进程不发生死锁的最小资源数,如果n=3,k=3,此时每个进程都需要3个资源,一共3个进程,要使得系统不发生死锁的最小资源数的计算公式是:m=n*(k-1)+1。也就是给每个进程分配刚好比所需要资源数少1的资源,例如给每个进程分配2个资源,此时一共分配了3*2=6个资源,此时在多给一个资源,无论是哪一个进程得到了该资源,都会继续执行,执行完毕后会释放资源,此时其他进程就可以使用释放的资源继续执行。所以该例中只需要分配6+1=7个资源,就可以使得系统不发生死锁。


二、死锁产生的必要条件

当系统中有多个进程共享的资源不足以同时满足它们的需求时,引起这些进程对资源的竞争导致死锁。产生死锁的4个必要条件为:

(1)互斥条件:进程对其所要求的资源进行排他性控制,即一次只允许一个进程使用(如打印机)。此时若有其他进程请求该资源,则请求进程只能等待。

(2)请求保持条件:零星的请求资源,即已获得部分资源又请求资源被阻塞。也就是说之前申请了资源,还想再次申请资源,但是之前申请的资源继续占用,除非完成任务后释放,否则其他进程都不能用。

(3)不可剥夺条件:进程已获得的资源在未使用完之前不能被剥夺,只能在使用完的时候由自己释放(只能是主动释放)。

(4)环路条件:又叫做循环等待条件,当发生死锁时,在进程资源有向图中必然构成环路,其中每个进程占有了下一个进程申请的一个或多个资源,也就是说一定会有一个环互相等待。如下图所示:

进程资源有向图由方框、圆圈和有向边三部分组成。其中方框表示资源,圆圈表示进程。

(1)分配资源:圆圈←方框,箭头由资源指向进程。

(2)请求资源:圆圈→方框,箭头由进程指向资源。

原则是先分配后申请,例如图中R1资源先分配给P2,R2资源分配给P1,此时P1要申请R1资源,P2申请R2资源,但是资源已经分配完了,于是陷入了环路等待的死锁。



下面是近几年对该知识点考察过的真题,以后仍是考试出题的重点,大家要重视起来。

【2012年22题】某系统中仅有5个并发进程竞争某类资源,且都需要该类资源3个,那么该类资源至少有( )个,才能保证系统不会发生死锁。

A、9       

B、10      

C、11       

D、15

解析:本题考查操作系统死锁的基础知识。

一共五个进程,每个进程都需要3个资源,如果给每个进程三个资源显然是满足的,但是题目要求最少多少个资源使得系统不发生死锁。此时就要找临界值的情况,做这类题思路就是让所有的进程都差一个就满足条件,在这道题中就是给每个进程都分配3-1=2个资源,此时共分配5*2=10个资源。如果在多提供一个资源,无论是哪一个进程得到了,都可以继续往下执行,直到执行完毕,会释放所占用的3个资源,此时其他进程也可以继续使用刚释放的资源。所以一共提供10+1=11个资源就可以保证系统刚好不发生死锁。

故正确答案为:C



【2019年17题】若系统中有4个互斥资源R,当系统中有2个进程竞争R,且每个进程都需要i个R (i≤3)时,该系统可能会发生死锁的最小i值是( )。

A、1          

B、2

C、3          

D、4

解析:本题考查操作系统死锁的基础知识。

2个进程竞争资源R,R的值为4,则当每个进程都需要4/2=2时,刚好不发生死锁,如果所需资源R再多1个,就有可能发生死锁,所以i的值为2+1=3。

故正确答案为:C



作者唯一官方个人微信公众号(昊洋与你一起成长):HYJY20180101

写于2021年9月9日

作者:昊洋讲师

版权所有,侵权必究




文章转载自昊洋与你一起成长,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论