【发布时间】:2015-07-05 13:43:34
【问题描述】:
我正在为我的 OS 期末考试而学习。目前在进程同步章节。 我们的书提供了以下算法来处理关键部分。 它声称该算法解决了饥饿问题并提供了有限的等待。这是伪代码
var flag: array [0..1] of Boolean;
Turn: 0..1;
Repeat
flag[i] := true;
turn := j;
while (flag[j] and turn=j) do no-op;
critical section
flag[i] := false;
remainder section
until false;
据我了解,当一个进程处于其关键部分并且另一个进程需要访问它但第一个进程无法完成时,就会发生饥饿。所以第二个过程必须永远等待。我记得在 CPU 调度中,例如,在算法中实现 aging 可以解决饥饿问题。但我不知道这会如何发生。
我错了吗?有什么我在这里看不到的吗?谢谢。
【问题讨论】:
-
您介意提一下书名吗?
-
请也写下算法的名称。
标签: operating-system synchronization critical-section thread-synchronization