这段代码如何保持有限的等待?

时间:2017-01-11 11:53:57

标签: operating-system critical-section

处理X代码:

我不明白这里是如何实现有限的等待。

do {
     while (turn != x);

     // critical section code goes here.

     turn = y;

     // remainder section code goes here.
} while(1);

2 个答案:

答案 0 :(得分:0)

此代码不会保持有限的等待。

这是一个场景,让Process X无限期地等待。

假设<a>输入Process X并离开它。变量Critical Section将设置为turn。现在,y能够再次输入Process X变量Critical Section,必须设置为turn,只要x进入{Process Y,就不会发生Critical Section {1}}。

因此,只有当两个流程XY输入Critical Section时,才会满足bounded waiting,否则,

答案 1 :(得分:0)

如果您正在准备OS考试,根据&#34; 操作系统概念&#34;,答案是: &#34; 保持有限的等待,但不会保持进展。&#34;

如果Pi和Pj都要进入临界区并且转= i。然后Pi先进入并且Pj等待它。在Pi退出后,即使Pi想要再次进入临界区,Pj仍然可以在Pi之前进入临界区再次进入。所以Pj最多等一转进入CS。

它不会保持进度。因为如果Pj想要进入CS并且转= i。它必须依赖Pi,这可能现在不想进入CS,设置转=学家