进程资源图的识读、判断节点是否阻塞、化简

让我们来看一下这道13年上半年的软设选择题:
 
在这里插入图片描述
先po答案:空1填B、空2填C

=======================================

 
如何看进程资源图呢?
(1)
P:进程
R:一类资源
R中的圆圈数:该类资源有几个

(2)
R→P(R指向P):分配一份R类资源给进程P
P→R(P指向R):进程P申请一份R类资源

(3)判断一个进程节点是否阻塞?
读图时,先看资源分配R→P,再看资源申请P→R

【注意】
读图时,**不要**将同时存在R→P、P→R双向箭头的情况理解成:
P先申请一个资源,R再分配一个资源给P!

可能存在的情况:

R中所有资源都分配出去了(R→P)
而此时还有进程P向R申请资源(P→R)
此时,申请资源R的进程P:成为阻塞节点


R中所有资源没有全部都分配出去了(R→P)
而此时还有进程P向R申请资源(P→R)
此时,申请资源R的进程P:成为非阻塞节点

(4)判断一个进程资源图是否是死锁的?
①如果所有节点都是阻塞的——此进程资源图不可以化简,是死锁的

②如果有节点不是阻塞的——
将非阻塞节点周围的箭头删去,只保留阻塞节点的箭头
此时,观察现在得到的图中,原来的阻塞节点是否阻塞?
 
如果在新图中,它是非阻塞的,则原图是可以化简的,非死锁的

==================================================

所以,现在再看这道题:
在这里插入图片描述
空1:(图a)

R1一共有2个资源,给P1、P2各分配一个,已经无可分配资源
此时P2还向R1申请1个资源,因为没有资源可以申请了,所以P2会阻塞;

同理,R2一共有3个资源,给P1分配1个、P2分配2个,已经无可分配资源
此时P1还向R2申请1个资源,因为没有资源可以申请了,所以P1也会阻塞;

因为P1、P2节点都阻塞了,所以此图无法化简,是死锁的

空2:(图b)

R1一共有2个资源,给P1、P3各分配一个,已经无可分配资源
此时P2还向R1申请1个资源,因为没有资源可以申请了,所以P2会阻塞;

R2一共有3个资源,给P2、P3各分配一个,还剩1个可分配资源
此时P1向R2申请1个资源,因为还有可分配资源,所以P1不会阻塞;
(此时P3也向R2申请1个资源,同理P3也不会阻塞)

【这里要特别注意:P1、P3虽然同时都在申请剩下的1个资源,但是并不意味着这个资源申请已经被响应了,从而造成死锁的现象】

猜你喜欢

转载自blog.csdn.net/weixin_43616639/article/details/109403290