【发布时间】:2016-05-24 16:45:29
【问题描述】:
恐龙书说,临界区问题的解决方案必须满足互斥、进度和有界等待
这是书中彼得森解决方案中描述的流程结构:
do {
flag[i]=True;
turn=j;
while (flag[j] && turn==j);
// critical section
flag[i]=False;
// remainder section
} while (True);
我不明白这是如何解决有限等待问题的。有界等待表示一个进程可以停止进入其临界区的次数是有限制的,因此没有进程会饿死。但是这里没有计数器,并且进程在这个解决方案中只共享这两个变量:
int turn;
boolean flag[2];
【问题讨论】:
-
看起来您或这本书都遗漏了一些片段。该算法仅在系统以通常不反映现实的特定方式运行时才有效。我从未停止对操作系统的教学方式感到惊讶。
标签: multithreading operating-system