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

admin2016-09-08  22

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

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

(50)

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

答案D

解析 试题(48)的正确的答案为B。根据前驱图,P2进程需要等待Pl进程的通知,故需要利用P(Sl)操作测试Pl进程是否运行完,所以空①应填P(Sl),P2进程运行结束需要利用V操作分别通知P3、P4进程,由于P3进程执行前已经用P(S2),所以空②应填V(S2)。
试题(49)的正确的答案为A。根据前驱图,P3进程运行结束需要利用两个V操作分别通知P4、P5进程,故空③应为两个V操作;又由于P4执行前需要等待进程P2、P3的结果,需要2个P操作,而P4进程的程序中执行前只有1个P操作,故空④应为1个P操作。采用排除法,对于试题(49)的选项A、选项B、选项C和选项D中,只有选项A满足条件。
试题(50)的正确的答案为D。根据前驱图P4、P5进程执行完都需要通知P6进程, P6进程运行前执行了P(S6)和P(S7),而P5进程执行完后执行了V(S7),故P4进程应该执行V(S6),即空⑤应填V(S6)。又因为P5进程开始运行前必须等待P3进程的通知,需要用P(S5)操作测试P3进程是否运行完。故空⑥应填写P(S5)。
根据上述分析,用PV操作控制这6个进程的同步与互斥的程序如下:
begin
Sl,S2,S3,S4,S5,S6,S7:semaphore://定义信号量
Sl:=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
Begin    Begin    Begin    Begin    Begin    Begin
Pl执行;    P(s1) ;    P(s2) ;    P(s3) ;    P(s5) ;    P(s6):
V(sl) ;    P2执行;    P3执行;    P(s4) ;    P5执行;    P(S7):
V(S4) ;    P4执行;    V(S7) ;    P6执行:
end;    V(S2) ;    V(S5) ;    V(S6):
end;    end:end;    end;    end:
Coend;
end.
转载请注明原文地址:https://kaotiyun.com/show/FJLZ777K
0

最新回复(0)