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

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

若用PV操作控制这6个进程的同步与互斥的程序如下,那么程序中的空a、空b和空c处应分别为(V(S3)、P(S2)和V(S4)V(S5));空d和空e处应分别为(P(S3)P(S4)和V(S6));空f和空g处应分别为(P(S5)和V(S7))。

浓缩知识点

进程同步控制中,前趋图用于描述进程间的先后依赖关系,其与PV操作的核心对应规则为:前驱进程执行完毕后,需通过V操作释放对应信号量,以此通知后续依赖进程;后继进程启动前,必须针对每个前驱进程对应的信号量执行P操作,获取到所有前驱的完成信号后才能开始运行。若一个进程是多个进程的前驱,完成后要为每个后继分别执行一次V操作;若一个进程有多个前驱,则要对每个前驱的信号量各执行一次P操作。

此外,PV操作是实现进程同步互斥的核心原语,P操作用于申请信号量,执行时信号量值减1,若结果小于0则进程进入阻塞队列等待;V操作用于释放信号量,执行时信号量值加1,若结果小于等于0则唤醒阻塞队列中的等待进程,这类原语执行过程不可中断,能有效避免并发进程的同步冲突问题。

正确答案
A

本题考察的是信号量与前趋图结合的进程同步控制
前趋图中的箭头表示后继进程必须等待前驱完成,前驱完成后执行V操作释放信号量,后继执行P操作等待信号量。
问题1
P2的前驱是P1,P2开始前应等待P1释放的信号,即P(S1),执行结束后要通知P4,因此(a)=V(S3)。
P3的前驱是P1,开始前应等待P1释放的信号,即(b)=P(S2),执行结束后要通知P4和P5,因此(c)=V(S4);V(S5)。
所以选A。

问题2
P4的前驱是P2和P3,必须在二者都完成后才能执行,因此在开始前需要等待二者的信号,即(d)=P(S3);P(S4),执行完成后需通知P6,即(e)=V(S6)。
所以选B。

问题3
P5的前驱是P3,开始前需等待P3的信号,即(f)=P(S5),执行完成后需通知P6,即(g)=V(S7)。
所以选C。

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