进程P1、P2、P3、P4、P5和P6的前趋图如下所示: 若用PV操作控制这6个进程的同步与互斥的程序如下,那么程序中的空①和空②处应分别为(48);空③和空④处应分别为(49);空⑤和空⑥处应分别为(50)。 S1,S2,S3,S4,S

admin2017-09-13  24

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

    若用PV操作控制这6个进程的同步与互斥的程序如下,那么程序中的空①和空②处应分别为(48);空③和空④处应分别为(49);空⑤和空⑥处应分别为(50)。
    S1,S2,S3,S4,S5,S6,S7:semaphore;  //定义信号量
    process P1 process P2 process P3 process P4 process P5 process P6

    C.V(S1)和V(S2)D.V(S2)和P(S1)

选项 A、V(S3)和V(S5)
B、P(S3)和V(S5)
C、V(S3)和P(S5)
D、P(S3)和P(S5)

答案D

解析 根据前驱图,P1进程运行完需要利用V操作分别通知P2、P3进程,所以空①应填V(S2)。P2进程需要等待P1进程的通知,故需要利用P(S1)操作测试P1进程是否运行完,由于P3进程执行前已经用P(S2),所以空②应填P(S1)。
    根据前驱图,P3进程需要等待P1和P2进程的通知,需要执行2个P操作,而P3进程的程序中执行前只有1个P操作,故空④应为1个P操作。P3进程运行结束需要利用1个V操作通知P5进程,故空③应为1个V操作。采用排除法,对于试题(49)的选项A、选项B、选项C和选项D中,只有选项B满足条件。
    根据前驱图,P4进程执行完需要通知P5进程,故P4进程应该执行V(S6),即空⑤应填V(S6)。P5进程运行前需要等待P3和P4进程的通知,需要执行2个P操作,故空⑥应填写P(S5)和P(S6)。
    根据上述分析,用PV操作控制这6个进程的同步与互斥的程序如下:
begin
  S1,S2,S3,S4,S5,S6,S7:semaphore;    //定义信号量
  S1:=0;  S2:=0;  S3:=0;  S4:=0;  S5:=0;  S6:=0;  S7:=0;
  Cobegin
    process  P1 process  P2    process  P3  process  P4  process  P5    process  P6
转载请注明原文地址:https://jikaoti.com/ti/jiJ7FFFM
0

最新回复(0)