【问题标题】:Peterson's solution with single variable彼得森的单变量解
【发布时间】:2018-01-16 19:07:28
【问题描述】:
do {
    turn = j;   // = (1-i)
    while(turn==j);
    //critical section 
    turn = j; //exit section. 
} while(true);

peterson 的算法能否仅使用 turn 变量。为什么需要标志变量?

【问题讨论】:

标签: multithreading concurrency operating-system critical-section


【解决方案1】:

显然是的。使用这种方法,进度条件不满足。 显然,当且仅当其他人将 turn 变量更改为自己的 id(比如 i)时,这里的进程 j 将继续前进(即,在 while(); 处停止等待)。

因此很明显,进程j的进度掌握在进程'i'手中。

例如。假设另一个进程在关键部分上方的非关键部分区域忙碌。或者可能其他进程被杀死/死锁等。然后这个可怜的进程j 一直在等待。

【讨论】:

  • 这不是正确实现的问题吗?进程 j 取决于进程 i 的“进度”(通过将其标记为 false)(en.wikipedia.org/wiki/Peterson%27s_algorithm
  • 不不,一点也不,它没有出现在维基百科的解决方案中。看兄弟,书中提到了最好和最简单的解释:- Tanenbaum 的 Modern OS - 3rd edition, Pg 123, Peterson Soution。
猜你喜欢
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 2013-02-17
  • 1970-01-01
  • 2013-09-02
  • 1970-01-01
相关资源
最近更新 更多