问题 单项选择题

●进程Pl、P2、P3、P4 和P5 的前趋图如下:

若用PV 操作控制进程P1~P5 并发执行的过程,则需要设置5 个信号量S1、S2、S3、S4和S5,进程间同步所使用的信号量标注在上图中的边上,且信号量S1~S5 的初值都等于零,初始状态下进程P1 开始执行。下图中a、b 和c 处应分别填写(2);d 和e 处应分别填写(3),f和g 处应分别填写(4)。

(4)处应填()。

A.P(S3)和V(S4)V(S5)

B.P(S3)和P(S4)P(S5)

C.V(S3)和V(S4)V(S5)

D.V(S3)和P(S4)P(S5)

答案

参考答案:B

解析:

[分析]: 本题考查PV操作方面的基本知识。

因为P1是P2和P3的前驱,当P1执行完应通知P2和P3,应采用V(S1) V(S2)操作分别通知P2和P3,故图中的a处应填写V(S1) V(S2);又因为P2是P1的后继,当P2执行前应测试P1是否执行完,应采用P(S1)操作测试P1是否执行完,故b处应填写P(S1);同理,P2是P4和P5的前驱,当P2执行完应通知P4和P5,应使用V(S3) V(S4)操作分别通知P4和P5,故c处应填写V(S3) V(S4)。

因为P3是P1的后继,当P3执行前应测试P1是否执行完,应采用P(S2)操作测试P1是否执行完,故d应填写P(S2);又因为P3是P5的前驱,当P3执行完应通知P5,应采用V(S5)操作通知P5,故e处应填写V(S5)。

因为P4是P2的后继,当P4执行前应测试P2是否执行完,应采用P(S3)操作分别测试P2是否执行完,故f处应填写P(S3);又因为P5是P2和P3的前驱,当P5执行前应测试P2和P3是否执行完,应采用P(S4) P(S5)操作分别测试P2和P3是否执行完,故g处应填写P(S4) P(S5)。

单项选择题
单项选择题