此代码段如何保持有界等待?
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
.
所以,只有X
和Y
两个进程,交替进入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.
处理 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
.
所以,只有X
和Y
两个进程,交替进入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.