📜  门| GATE CS 2020 |第44章

📅  最后修改于: 2021-06-28 18:16:57             🧑  作者: Mango

一组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)确保任何时候都在代码部分Q中有两个进程
(C)确保所有进程互斥地执行代码部分P
(D)确保在任何时候最多n-1个进程在代码节P中答案: (A)
说明:由于wait(b),所有运行给定代码的进程将保持阻塞状态,直到count的值变为n。

当count的值等于n时,b的值将更改为1,这将随后使处理进入Q部分。

因此,在所有进程都执行代码段P之前,任何进程都不能进入Q节。

选项(A)是正确的。
这个问题的测验