返回
当前 - 选择题 - 信号量
题号:0120160500033
单选题
2016年5月第33题

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

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

浓缩知识点

用信号量PV操作实现前趋图同步的核心规则是,若进程A必须先于进程B执行,需为该前趋关系设置专属信号量,在A执行结束前执行V操作释放该信号量,在B开始执行前执行P操作获取该信号量,以此保证B在A完成后才启动;若某进程存在多个前驱进程,则需为每个前趋关系分别设置信号量,该进程启动前需对所有前驱对应的信号量依次执行P操作,确保所有前驱进程全部完成后自身才开始运行。此外,PV操作的基础逻辑为:P操作用于申请资源或进入等待状态,若信号量值为0则会阻塞当前进程;V操作用于释放资源或唤醒等待队列中的进程,执行后会增加信号量值,若有进程因该信号量阻塞则会唤醒其中一个。

正确答案
D

本题考察的是用信号量PV操作实现前趋图同步
规则是:若A必须先于B完成,则在A处执行V(对应信号量),在B开始前执行P(同一信号量);若一个结点需等待多个前驱,则对每个前驱分别设置一个P操作。
问题1
①在P1中、②在P2开始处,分别用于体现P1→P3与P1→P2、P2→后继的等待关系。
A选项 V(S1) 和 P(S2):V(S1)应放在P1结束前用于唤醒P2,而不是①处;且P2应等待来自P1的S1而非S2,错误。
B选项 P(S1) 和 V(S2):P1内不应做P操作自我阻塞;P2开始前应等待S1而不是释放S2,错误。
C选项 V(S1) 和 V(S2):P2开始处需要等待而非再次V,错误。
D选项 V(S2) 和 P(S1):P1对P3这条前驱另设信号量S2,①处V(S2)用于将来唤醒P3;②处P(S1)使P2在得到P1的V(S1)之前不能执行,符合P1→P2与P1→P3,正确。
选择选项 D。

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