返回
当前 - 选择题 - 信号量
题号:0120210500037
单选题
2021年5月第37题

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

若用PV操作控制这6个进程的同步与互斥的程序如下,那么程序中的空①和空②处应分别为(V(S1)和 V(S2)V(S3));空③和空④处应分别为(V(S4)V(S5)和P(S3));空⑤和空⑥处应分别为(P(S6)和V(S7))。

浓缩知识点

PV操作是实现进程同步的核心机制,其中P操作用于进程申请信号量、进入等待状态,V操作用于进程释放信号量、唤醒等待的后继进程。在结合前趋图实现进程同步时,需遵循固定对应规则:前趋图中存在X→Y的依赖关系时,X进程执行完毕后要对对应同步信号量执行V操作,向Y进程传递完成信号;Y进程启动前需对该信号量执行P操作,等待X进程的完成信号。针对多依赖场景,若某进程有多个前驱,必须在启动前对每个前驱对应的信号量依次执行P操作,确保等待所有前驱都完成后再执行;若某进程有多个后继,则要在执行结束后对每个后继对应的信号量分别执行V操作,实现对所有后继进程的唤醒。用于同步的信号量初始值一般设为0,以此保证进程未收到前驱信号时会处于等待状态,严格遵循前趋约束。

正确答案
C

本题考察的是用信号量(PV操作)实现前趋图约束的设计方法。
前趋图中的一条有向边“X→Y”表示进程Y必须等待进程X完成后才能继续;在程序中体现为X结束时执行V(·)发信号,Y开始前执行P(·)等待信号。据此为每条依赖关系分配一对匹配的信号量。
问题1(空①与空②):
A选项 V(S1)和 P(S2)P(S3):②处在P2内部,应当由P2在执行完后对后继进程发信号,而不是再做等待,故错误。
B选项 P(S1)和 V(S2)V(S3):①位于P1结束处,应由P1释放给P2的启动信号,不能再等待,故错误。
C选项 V(S1)和 V(S2)V(S3):①用V(S1)满足P2之前的P(S1)(实现P1→P2);②用V(S2)唤醒P3(实现P2→P3),用V(S3)作为P4的其一前驱信号(实现P2→P4),正确。
D选项 P(S1)和 P(S2)P(S3):①位置应释放信号而非等待;②也不应等待,均错误。
因此选择C。

联系我们
隐私协议
用户协议
微信公众号
知乎
小红书
浙ICP备2021029036号
@2022-2026
嘉兴市安芯网络科技有限公司 版权所有