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

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

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

正确答案C
凯恩解析

本题考察的是用信号量(PV操作)实现前趋图约束的设计方法。
前趋图中的一条有向边“X→Y”表示进程Y必须等待进程X完成后才能继续;在程序中体现为X结束时执行V(·)发信号,Y开始前执行P(·)等待信号。据此为每条依赖关系分配一对匹配的信号量。

问题1(空①与空②):
A选项 V(S1)和 P(S2)P(S3):②处在P2内部,应当由P2在执行完后对后继进程发信号,而不是再做等待,故错误。
B选项 P(S1)和 V(S2)V(S3):①位于P1结束处,应由P1释放给P2的启动信号,不能再等待,故错误。
C选项 V(S1)和 V(S2)V(S3):①用V(S1)满足P2之前的P(S1)(实现P1→P2);②用V(S2)唤醒P3(实现P2→P3),用V(S3)作为P4的其一前驱信号(实现P2→P4),正确。
D选项 P(S1)和 P(S2)P(S3):①位置应释放信号而非等待;②也不应等待,均错误。
因此选择C。

问题2(空③与空④):
A选项 V(S4)V(S5)和 P(S3):③在P3结束处,向P4与P5各发一个启动信号,分别用S4与S5(实现P3→P4、P3→P5);④在P4开始前等待来自P2的另一前驱信号P(S3)(实现P2→P4),正确。
B选项 P(S4)和 V(S4)V(S5):③在P3处不应等待;④在P4开始处只有等待动作,不应再发信号,错误。
C选项 P(S4)P(S5)和 V(S3):③在P3结束处应释放而非等待;④应在P4处等待而非由P4去释放给别人,错误。
D选项 V(S4)和 V(S5)P(S5):④位置应为等待来自P2的S3,而非掺杂S5,错误。
因此选择A。

问题3(空⑤与空⑥):
A选项 P(S5)和 P(S7):⑤在P5开始前确实要等P3的信号P(S5),但⑥在P5结束后应给P6发启动信号,而不是等待,错误。
B选项 P(S6)和 P(S7):⑤只等待来自P4的S6而漏等来自P3的S5(题中已在P5前写有P(S5),⑤应补充另一前驱);⑥仍是等待而非释放,错误。
C选项 V(S6)和 V(S7):⑤在P5开始前不应释放S6;S6应由P4结束后释放,错误。
D选项 P(S6)和 V(S7):⑤在P5开始前再补充等待来自P4的信号P(S6),与前面的P(S5)一起实现P3、P4双前驱;⑥在P5结束后发V(S7)唤醒P6(实现P5→P6),正确。
因此选择D。

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