软件评测师写作专栏之进程死锁知识07

2020-08-07  本文已影响0人  昊洋_写作的匠心

各位学员大家好,大家在学习操作系统时,进程的死锁在考试中经常出现,而很多学员在做题时又很容易搞不明白其中的原理。为了让大家快速掌握这方面的知识点,接下来就带领大家一起来学习一下!

例题:假设系统中有R类资源m个,现有n个进程互斥使用。若每个进程对R资源的最大需求为w,那么当m、n、w取下表的值时,对于下表中的a~e五种情况,( )两种情况可能会发生死锁。

A、a和b 

B、b和c 

C、c和d 

D、c和e 

【昊洋详解】:本题考查对操作系统死锁方面基本知识掌握的程度,也涉及到进程互斥的情况,我们也放到PV操作这里给大家补充,由于也在考试中出现过,大家一定要把死锁这类问题搞清楚。系统中同类资源分配不当的时候会引起死锁,一般情况下,若系统中有m个单位的存储器资源,它被n个进程使用,每个进程都要求w个单位的存储器资源,当m<n*(w-1)+1时,可能会引起死锁。

这道题看似很复杂,但是只要我们学会“分而治之”的思想,那么解决起来就很简单,我们把这个表格分成a、b、c、d和e五种情况。

首先我们看一下a,m、n和w分别取值为2,1,2,也就是有R类资源2个,现有1个进程使用,每个进程对R资源的最大需求为2,此时我们发现刚好有1个进程,且满足使用,所以a种情况不会发生死锁。

同样我们看一下b,有R类资源2个,现有2个进程互斥使用,每个进程对R资源的最大需求为1,显然也是满足使用的,b种情况也不会发生死锁。

当面对c种情况时,有R类资源2个,现有2个进程互斥使用,每个进程对R资源的最大需求为2,此时如果2个进程都占用了1个资源,就都会无法继续进行下一步,无法满足情况,导致发生死锁。有的学员在这种情况下容易掉入陷阱,认为先让1个进程使用2个资源,然后使用完毕后,再让另一个进程使用刚释放的2个资源不就行了吗?这就是掉进了思维陷阱,我们要知道进程是不会和我们商量和妥协的,只要有一种情况会导致无法满足进程的使用,就会可能发生死锁。

我们继续看一下d,有R类资源4个,现有3个进程互斥使用,每个进程对R资源的最大需求为2,我们还是找一下极端情况,就是让3个进程都先占用1个资源,然后还剩下1个资源,因为每个进程对R资源的最大需求为2,所以无论3个进程中哪一个使用,都可以在使用后释放2个资源,剩下的2个进程也就会继续使用,不会发生死锁。

最后我们再看一下e,有R类资源4个,现有3个进程互斥使用,每个进程对R资源的最大需求为3,我们还是找一下极端情况,就是让3个进程都先占用2个资源,此时发现还差2个资源,所以肯定会发生死锁。这种情况下,要想不发生死锁,最少需要7个资源才能满足。

综上所述,只有c和e两种情况时会发生死锁,故正确答案为D。

2.3.3 巩固练习题

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

A、3

B、5

C、11 

D、15

(2)以下选项中,属于死锁产生的必要条件的是?(多选题)

A、互斥条件

B、请求保持条件

C、不可剥夺条件

D、环路条件

练习题请大家先自己去做,也欢迎大家把答案留言,张老师会给大家判别正误。

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

写于2020年8月7日

作者:昊洋讲师

版权所有,侵权必究

上一篇下一篇

猜你喜欢

热点阅读