【进程管理】进程 P1、P2 、P3、P4 和 P5 的前趋图如下所示:

【2017年上半年】进程 P1、P2 、P3、P4 和 P5 的前趋图如下所示:

 

 

若用 PV 操作控制进程 P1、P2、P3、P4 和 P5 并发执行的过程,需要设置 5 个信号量 S1、S2、S3、S4 和 S5,且信号量 S1~S5 的初值都等于零。如下的进程执行图中 a 和 b 处应分别填写(26);c 和 d 处应分别填写(27) ;e 和 f 处应分别填写(28)。

(26)A.V (S1)和 P(S2)V(S3)     B.P(S1)和 V(S2)V(S3)  C.V(S1)和 V(S2)V(S3)   D.P(S1)和 P(S2)V(S3)

(27)A.P(S2)和 P(S4) B.V(S2)和 P(S4) C.P(S2)和 V(S4) D.V(S2)和 V(S4)

(28)A.P(S4)和 V(S5) B.V(S5)和 P(S4) C.V(S4)和 P(S5) D.V(S4)和 V(S5)

【解析】

这是一道关于进程管理的题目,主要是给出进程的前驱图然后要我们根据图示来判断每个进程的执行状态,对于这种题目我们看答案可能会很懵逼尤其是关于解释P(X)和V(X),在这里我用自己的粗鲁的理解为大家解释下:

P(X):这个主要就是检查上一个进程是否完成

V(X):就是唤醒当前进程指向的下一个进程

好了明白上述的两个概念接下来我们要将信号量与前驱图联系起来,请看我的手法如下:

>首先我们将信号量标记到每个进程的前趋图上,这里我们讲一下如何正确的标记(进过我个人多次的测试很有用),其实很简单我们看到这里的前驱图有5根线并且有5个信号量,所以我们按照进程的先后次序依次与信号量的先后次序相连接,如P1->P2这里我们在线段上标记S1其次是P2->P3我们标记S2以此类推我相信大家看的懂得。

>做了上述步骤接下来我们看问题,就以26题为例问我们ab填什么

ab对应的是进程2,我我们可以看到我标记的图所示,p2是P1完成后到执行到P2,所以看到a我们需要知道执行P2之前我们需要检查P1是否完成所以应该填P(S1),如果P1完成则执行P2,执行完成P2之后我们需要指向下一个进程也即是P3和P4则我们需要去唤醒P3用V(S3)V(S4),然后你们再看看我上面解释的:

>好了懂了这个原理之后其他的选项以此类推,是不是八达鸟的清晰呀,是不是我的手法一个字美呀,美的一塌糊涂!

【小结】

这是软考考察此种题型的简单策略,碰到这种题目就用这种方法很直观的,如果需要资料的话请关注左上角的公众号在后台回复免费获取。

 

发布了196 篇原创文章 · 获赞 581 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/wyf2017/article/details/89425039