查看更多
当前 - 选择题 - 信号量
简单
单选题
2015年5月第39题
#第二版教材
#必须掌握

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

若用PV操作控制这6个进程的同步与互斥的程序如下,那么程序中的空①和空②处应分别为 (问题1) ;空③和空④处应分别为 (问题2) ;空⑤和空⑥处应分别为 (问题3)

浓缩知识点

PV操作是实现进程同步与互斥的经典机制,P操作用于申请信号量,若信号量值为0则进程阻塞等待;V操作用于释放信号量,会唤醒等待该信号量的进程。在基于前趋图的进程同步场景中,需遵循核心规则:前驱进程执行结束后,需对每个后继进程对应的同步信号量执行V操作,告知后继进程自身已完成;后继进程启动前,需对所有依赖的前驱进程对应的同步信号量执行P操作,确保所有前驱进程均已执行完毕。同步信号量初始值通常设为0,若存在多组前驱后继依赖关系,需为每组关系单独设置信号量,避免依赖混淆;若是互斥场景,互斥信号量初始值设为1,用于保护临界区资源,进入临界区前执行P操作,退出时执行V操作。

正确答案
B

本题考察的是前趋图约束下的PV信号量同步设计
核心原则:前驱完成时执行V释放信号量,后继开始前执行P等待该信号量。据图可知依赖关系为:P1→P2;P2→P3、P4;P3→P4、P5;P4、P5→P6。
问题1
A选项 V(S1)和P(S2):应在P2开始前等待P1完成,因此应P(S1)而非V,错误。
B选项 P(S1)和V(S2):P2在开始前等待S1(由P1结束V(S1)释放);P2完成后需唤醒P3(依赖P2),因此V(S2),正确。
C选项 V(S1)和V(S2):开始前不应V(S1),错误。
D选项 V(S2)和P(S1):次序不符,错误。
所以选择 B。

问题2
A选项 V(S4)V(S5)和P(S3):P3完成后需唤醒其后继P4与P5,故V(S4)和V(S5);P4在开始前除自身的P(S4)外,还需等待来自P2的S3(因P2→P4),故在④处为P(S3),正确。
B选项 P(S4)P(S5)和V(S3):P3结束不应P而应V,错误;P4开始前不应V(S3),错误。
C选项 V(S3)V(S4)和V(S5):把P3与P2的关系混淆,错误。
D选项 P(S3)V(S4)和P(S3):③位置为P而非V,错误。
所以选择 A。

问题3
A选项 P(S6)和V(S5):⑤位于P4结束处,应释放给P6的信号量S6(因P4→P6),不应P;⑥位于P5开始处,应等待来自P3的S5,非V,故本项不匹配。
B选项 P(S6)和P(S5):⑤应为V(S6)以唤醒P6,错误。
C选项 V(S5)和V(S6):⑤应为V(S6)而不是V(S5);⑥处应等待而非释放,错误。
D选项 V(S6)和P(S5):P4结束后V(S6)以满足P6对S6的等待;P5开始前P(S5)以等待P3完成(P3→P5),正确。
所以选择 D。

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