查看更多
当前 - 选择题 - 信号量
简单
单选题
2016年5月第33题
#操作系统
#信号量
#第二版教材
#凯恩建议必须掌握

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

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

正确答案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。

问题2
③在P3开始处、④在P3结束处。P3需等待P1与P2均完成,然后把完成信号发给P5。
A选项 V(S3) 和 V(S5):③应为等待来自P2的S3而不是V,错误。
B选项 P(S3) 和 V(S5):P3在P(S2)之后再执行P(S3),表示同时等待P1与P2;完成后V(S5)通知P5,正确。
C选项 V(S3) 和 P(S5):③方向反了;④不应在P3里做P(S5),错误。
D选项 P(S3) 和 P(S5):④应是向后继发信号而非再等待,错误。
选择选项 B。

问题3
⑤在P4结束处、⑥在P5开始处。P5须等待来自P3与P4的两个完成信号。
A选项 P(S6) 和 P(S5)P(S6):⑤应为V操作而不是P,错误。
B选项 V(S5) 和 V(S5)V(S6):⑤属于P4给P5的完成信号,但应是V(S6);⑥处需要P而不是V,错误。
C选项 V(S6) 和 P(S5)P(S6):P4完成后V(S6);P5开始前同时等待来自P3的S5和来自P4的S6,正确。
D选项 P(S6) 和 P(S5)P(S6):⑤用P会阻塞P4自身,错误。
选择选项 C。

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