一组 n 个进程中的每个进程使用两个分别初始化为 1 和 0 的信号量 a 和 b 执行以下代码。假设 count 是一个初始化为 0 的共享变量,并且未在 CODE SECTION P 中使用。
CODE SECTION P
wait(a); count=count+1;
if (count==n) signal (b);
signal (a): wait (b) ; signal (b);
CODE SECTION Q
代码实现了什么?
(A)它确保在每个进程都完成 CODE SECTION P 之前没有进程执行 CODE SECTION Q
(B)保证两个进程在任何时候都在CODE SECTION Q
(C)它确保所有进程都互斥地执行 CODE SECTION P
(D)它确保在任何时候代码段 P 中最多有 n-1 个进程答案:(一)
解释:所有运行给定代码的进程将由于wait(b)而保持阻塞状态,直到count 的值变为n。
当 count 的值等于 n 时,b 的值变为 1,这将允许进程进入部分 Q。
因此,在所有进程都执行代码段 P 之前,没有进程可以进入段 Q。
选项(A)是正确的。
这个问题的测验