有两个优先级相同的进程p1和p2,如下,信号量s1,s2的初值均为0,试问p1,p2并发执行结束后,x=? y=? z=?

来源:百度知道 编辑:UC知道 时间:2024/06/22 14:57:04
(进程p1:y=1;y=y+2;v(s1);x=y+1;p(s2);y=z+y.
进程p2:x=1;x=x+1;p(s1);x=x+y;v(s2);z=x+z)
请在明天中午之前给出答案,明天下午就要交作业

现对进程语句进行编号,以方便描述。
P1: P2:
begin begin
y:=1; ① x:=1; ⑤
y:=y+2; ② x:=x+1; ⑥
V(S1); P(S1);
z:=y+1; ③ x:=x+y; ⑦
P(S2); V(S2);
y:=z+y ④ z:=z+x; ⑧
end. end.
①、②、⑤和⑥是不相交语句,可以任何次序交错执行,而结果是唯一的。接着无论系统如何调度进程并发执行,当执行到语句⑦时,可以得到x=5,y=3。按Bernstein条件,语句③的执行结果不受语句⑦的影响,故语句③执行后得到z=4。最后,语句④和⑧并发执行,最后结果为:
语句④先执行,再执行⑧:x=5,y=7,z=9。
语句⑧先执行,再执行④:x=5 ,y=12,z=9。