单选题
进程P1、P2、P3、P4和P5的前趋图如图所示。
图1 相关进程的前趋图
若用PV操作控制进程P1~P5并发执行的过程,则需要设置5个信号量:S1、S2、S3、S4和S5,进程间同步所使用的信号量标注在上图中的边上,且信号量S1~S5的初值都等于零,初始状态下进程P1开始执行。图2中a、b和c处应分别填写______;d和e处应分别填写______,f和g处应分别填写______。
【正确答案】
B
【答案解析】[解析] P操作表示申请一个资源,V操作表示释放一个资源。由图1可知,P1是P2和P3的前驱,当P1执行完应通知P2和P3,可采用V(S1)、V(S2)操作分别通知P2和P3,因此图2中的a空缺处应填入V(S1)V(S2)。同理,P2是P4和P5的前驱,当P2执行完应通知P4和P5,应采用V(S3)、V(S4)操作分别通知P4和P5,因此图2中c空缺处应填入V(S3)V(S4);P3是P5的前驱,当P3执行完应采用V(S5)操作通知P5,因此图2中的e空缺处应填入V(S5)。
由于P2是P1的后继,当P2执行前应先采用P(S1)操作来测试P1是否执行完毕,因此图1中的b空缺处应填入P(S1)。同理,P3也是P1的后继,当P3执行前应先采用P(S2)操作来测试P1是否执行完毕,因此图2中的d空缺处应填入P(S2);P4是P2的后继,当P4执行前应采用P(S3)操作来测试P2是否执行完毕,即图2中的f空缺处应填入P(S3);P5是P2和P3的前驱,当P5执行前应采用P(S4)、P(S5)操作分别测试P2和P3是否执行完毕,即图2中的g空缺处应填入P(S4)P(S5)。