软件设计师(软考)13年上半年上午25题进程资源图
软件设计师(软考)13年上半年上午25题26题进程资源图
一、资源进程图的化简与判断死锁问题
做这种题目首先我们要先明白一句话:资源先分配,然后进程再请求。
倘若资源中没有资源,那么进程则无法请求到,那么就会出现阻塞状态。
并且资源分配与请求不能够只是简单的相互抵消。
二、通过此题目进行理解
我们首先先观察图(a)
首先R1先分配资源,R1一次性将自己的资源全部分配出去了,R1先把资源分配给了P1和P2,导致R1中现在并不存在资源,这时候P2向R1中申请资源,但是由于R1中并没有资源,导致P2一直在等待R1中有资源。所以这时候P2是处于阻塞状态。
接下来观察R2,R2同样一次性将自己的资源全部分配出去了,导致R2中并没有资源,这也就导致P1向R2请求资源同样请求不到,所以P1也处于阻塞状态。
所以我们现在发现P1,P2两个进程都处于阻塞状态。那么图(a)这个图就出现了死锁的情况,所以的资源和进程都处理不了。一整个图都不能进行任何化简。(化简其实就是把图中一些线给消去。)
所以25题我们选择B
接下来我们来观察图(b)
还是和图(a)中的分析一样的。资源先分配,然后进程再去请求。
先看到R1中,R1先分配,将自己的两个资源一次性全部分配出去了,R1中就没有资源了,这个时候P2来请求R1中的资源请求不到,所以P2现在处于阻塞状态。 然后我们现在来看R2,R2先是把自己的资源分配了两个出去,一个给了P2,一个给了P3,自己本身还存在一个资源,这个时候P1来请求R2的一个资源,就能够请求的到,然后P1成功将请求R2资源的那条线消去了,然后P1就能够去处理R1所分配过来的一个资源,处理完成之后,P1就将R1所分配过来的资源归还回去,这个时候R1就有一个资源了。 那么一直处于阻塞状态的P2发现R1有了一个资源之后,立刻就能够请求到了,然后将R1中的一个资源拿了过来,P2的请求就结束了,并且再处理完之后将资源归还回去,然后就能够处理R2所分配过来的资源,然后再将R2所分配过来的资源归还回去。 完成了上述操作之后,R2中就有两个资源,这时P3来请求一个资源就肯定能够请求的到。并且将分配来的资源处理掉。
完成一系列操作之后,整张图的线就已经全部消除了。这就是成功化简了,并且没有一个地方出现无法执行的状态,也就是没有出现死锁状态,所以26题我们选择C
图b图解
上面可能有些啰嗦,我们用图解直观的来看一下
1、先是原图 2、首先分配完成之后,P2去申请R1,发现并能够申请的到,所以P2处于阻塞状态。 3、这个时候由于R2中有一个资源,所以P1能够申请的到,并且将R1分配来的资源处理掉,所以R1中就有一个资源了。这个样就化简了P1。
4、这个时候P2就发现了他所申请的R1中有一个资源了,所以阻塞状态解除,并且向R1申请到了资源,并且处理掉R2所分配过来的资源。R2中就有两个资源了。这个时候就化简了P2。 5、最后R3向R2中请求资源,并且能够请求的到,请求处理完成之后,再去做所分配过来的资源,然后P3也就孤立了,并且将所分配来的资源返还回去,所以R1中有2个资源,R2中有3个资源。
6、最后完成图像所有操作。