一个例子看懂操作系统的PV操作

文章介绍了如何使用PV操作控制五个进程(P1至P5)的同步与互斥,基于前趋图的关系,详细分析了各进程间的逻辑顺序,并给出了相应的PV操作填空答案:DBCA。解释了每个进程在开始和结束时应调用的信号量操作,以确保正确执行顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作系统学过很久了,很多东西都忘了,刚刚来复习操作系统的PV操作,百度搜了好几篇文章,最后还是看的一知半解,然后看到2018年的一个软考题和答案,这才一目了然。我觉得这个答案是最浅显易懂的解释了。

题目如下:进程 P1、P2、P3、P4 和 P5 的前趋图如下所示:

在这里插入图片描述
若用 PV 操作控制这 5 个进程的同步与互斥的程序如下,那么程序中的空①和空②处应分别为(24);空③和空④处应分别为(25);空⑤和空⑥处应分别为(26)。

在这里插入图片描述
(24)A. V(S1)和 P(S2) B. P(S1)和 V(S2)
C. V(S1)和 V(S2) D. V(S2)和 P(S1)

(25)A.V(S3)和V(S5) B.P(S3)和V(S5)
C.V(S3)和P(S5) D.P(S3)和P(S5)

(26)A.P(S6)和P(S5)V(S6) B.V(S5)和V(S5)V(S6)
C.V(S6)和P(S5)P(S6) D.P(S6)和P(S5)P(S6)

【答案】D B C
【解析】本题考查的是利用PV操作控制进程的并发执行。
先理清楚前趋图中的逻辑关系:P1没有前驱,P2的前驱是P1,P3的前驱是P1、P2,P4的前驱是P2,P5的前驱是P3、P4。
前驱就是指只有在前驱进程完成后,该进程才能开始执行。由图可知,这里进程之间有6条有向弧,分别表示为P1->P2,P1-P3,P2->P3,P2->P4,P3->P5,P4->P5,各个进程间的逻辑关系,那么我们需要设定6个信号量(S1、S2、S3、S4、S5、S6),利用PV操作来控制这些过程。
在这里插入图片描述
对于第一个空①,P1执行完成之后,需要通知P2、P3可以开始,此处需要V(S1)、V(S2)操作分别唤醒P2、P3进程,已有V(S1),此处需要填写V(S2)。
第二个空②,P2执行之前,需要检查P1进程是否完成,因此需要通过P(S1)操作来判定,P1是否完成。
第三个空③,在P3执行之前,需要检查P1、P2进程是否完成,因此需要通过P(S2)、P(S3)操作来判定P1、P2是否完成,已有P(S2),此处填写P(S3)。
第四个空④,P3执行完成后,需要通知P5进程可以开始,此处需要通过V(S5)操作唤醒P5进程;
第五个空⑤,P4进程完成后,需要通知P5进程可以开始,此处需要通过V(S6)操作唤醒P5进程;
第六个空⑥,P5进程开始之前,需要检查P3、P4进程是否已完成,因此需要P(S5)、P(S6)操作来判断P3、P4是否完成。

(滑动查看不方便的话就只看下面这一张图)
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值