操作系统题目

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:42:29
有两个进程P1,P2(优先级相同)
W1,W2信号量初值为0.p1,p2并发执行后,a,b,c的值是多少。
p1
BEGIN
a:=10;
V(W1);
c:=b+2;
P(W2);
b:=c+b;
END

P2:
BEGIN
a:=30;
P(w1);
a:=a+b;
V(w2);
c:=c+a;
END
p1
BEGIN
b:=10;
V(W1);
c:=b+2;
P(W2);
b:=c+b;
END

P2:
BEGIN
a:=30;
P(w1);
a:=a+b;
V(w2);
c:=c+a;
END
疏忽了,a:=10写错了,应该是b:=10
SORRY!

好 我看看
应该是先从p1开始执行
执行的v(w1)
可能有两种方向1:p1 2:p2
先看第一种情况 c:=b+2; 这里c=12
再执行P(W2); 因为没有执行V(w2);
所以暂停 接下来执行p2
P(w1); 因为上面有v(w1)
所以不会暂停 执行a:=a+b; 这里a=40
再到V(w2);
还是两种方向 1:p1 2:p2
看第二种c:=c+a; c=42
再到b:=c+b; b=52

我这里只说了 一种情况 其实还有2--3种情况
分析和上面都是一样的 自己试着分析一下吧