这是两个并发进程P 1 ,P 2 ,分别带有代码:
P 1代码:
while (true) // infinite condition
{
A :____;
printf("%d", 1);
printf("%d", 1);
B:____;
}
P 2代码:
while (true) // infinite condition
{
C:____;
printf("%d", 0);
printf("%d", 0);
D:____;
}
为了获得输出110011001100…,分别在A,B,C,D上执行的二进制信号量应该是什么,信号量M,N的初始值应该是什么?
其中P处于下降状态,V处于向上工作状态。
(A) A = P(N),B = V(M),C = P(M),D = V(N); M = 0,N = 1;
(B) A = P(N),B = V(M),C = P(M),D = P(N); M = N = 1;
(C) A = P(N),B = V(N),C = P(M),D = V(M); M = 1,N = 0;
(D) A = P(N),B = V(N),C = P(M),D = V(M); M = N = 1;答案: (A)
解释:
这个问题的测验