此代码段如何保持有界等待?

How does this code section maintain bounded waiting?

处理 X 代码:

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

do {
     while (turn != x);

     // critical section code goes here.

     turn = y;

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

此代码不维护有限等待。

这是让进程 X 无限期等待的场景。

假设Process X进入Critical Section并离开。变量 turn 将被设置为 y。现在 Process X 能够再次输入 Critical Section,变量 turn,必须设置为 x,只要 Process Y 输入 Critical Section.

所以,只有XY两个进程,交替进入Critical Section,才有bounded waiting满意,否则,不。

如果你正在准备OS考试,根据“操作系统概念”,答案是: “它确实保持有限等待但不保持进度。”

如果Pi和Pj都想进入临界区转= i.Then Pi先进入,Pj等待。Pi退出后,即使Pi想再次进入临界区,Pj仍然可以进入Pi进入前临界区again.So Pj最多等一圈进入CS.

它不保持进度。因为如果Pj想进入CS并且turn=i.It必须依赖Pi,它可能现在不想进入CS,设置turn= j.