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

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

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

浓缩知识点

进程同步中,利用PV操作结合前驱图控制多进程并发执行的核心知识点如下:同步信号量初始值一般设为0,用于传递进程完成的同步信号。核心规则为:前驱进程执行结束后,需通过V操作释放对应信号量,以此通知所有依赖它的后继进程;后继进程启动前,必须通过P操作等待所有前驱进程对应的信号量,只有获取到所有前置信号量的许可(即所有前驱均已完成),才能开始执行。若一个进程存在多个前驱,需为每个前驱对应的信号量分别执行P操作,保证所有前置约束均满足;若一个进程存在多个后继,需为每个后继对应的信号量分别执行V操作,实现对所有后继的同步通知,以此严格保障前驱图定义的进程执行时序,避免并发场景下的时序混乱。

正确答案
A

本题考察的是前趋图约束与信号量PV操作的配合
规则为:前驱完成时执行V释放信号量,后继开始前执行P等待相应信号量,并且当一个结点有多个前驱/后继时,需要对应的多个V或多个P来表达“并发后同步”。
问题1解析(P2所在列的a、b):前趋图表明P2必须在P1之后执行,因此在P2开始前应等待P1释放的信号量;P2完成后同时唤醒其两个后继P3与P4。故a= P(S1)b= V(S2) V(S3),分别对应依赖P1与通知P3、P4。
问题2解析(P3完成后的c与P4开始前的d):P3开始前已在图中给出等待P(S2)(来自P2)。P3完成后需同时通知其两个后继P4与P5,故c= V(S4) V(S5)。P4有两个前驱P2与P3,因此在开始前需同时等待二者的完成,故d= P(S3) P(S4)
问题3解析(P5完成后的e与P6开始前的f):P5开始前已等待P(S5)(来自P3)。P5完成后要向最终结点P6发出一个同步信号,故e= V(S7)。P6有两个前驱P4与P5,执行前需同时等待来自P4的S6与来自P5的S7,因此f= P(S7)(而P(S6)已在图中给出)。

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