0

以下解决方案如何不满足临界区问题的解决方案标准

三种情况哪一种不满足?
1. 互斥
2. 进步
3. 有限等待

我知道这是令人满意的互斥,但是2 和 3 呢?
请注意,这不是家庭作业。我想了很多,但还是不清楚。

[编辑]
删除图片并添加代码。

Pi’s Algorithm    
    Var flag : array [ i…j] of boolean    
    repeat  
    flag [i] = true;    
While ( flag [j]  == “ true ”) do no-op;        


            Critical section


Flag [i]=“ false ”;
 until false

另一个过程

Pj’s Algorithm    
    Var flag : array [ i…j] of boolean
repeat  
  flag [ j ] = true;
While ( flag [ i ]  == “ true ”) do no-op;  


        Critical section


Flag [j]=“ false ”;
 until false
4

1 回答 1

0

系统可能会死锁:

2 个进程:P1、P2。我假设 i 和 j 是进程的 ID,并且是共享变量,flags 数组也是如此。

然后P1开始执行:

flag[1] := true;

-> 这里 P1 被调度程序中断,P2 开始运行:

flag[2] := true;
while (flag[1] == true) do nop ;

-> P2 仍然在这个循环中。稍后调度程序再次选择 P1:

while (flag[2] == true) do nop;

-> P1 也陷入了循环。没有进展。这种死锁,因此违反了#2 和#3。此外,也有可能一个进程被饿死(另一个进程总是运行整个代码并且永远不会在 flag[i] := false 和 flag[i] := true 之间中断,因此第一个进程永远不会得到有机会离开 while 循环。

于 2012-06-20T11:48:19.957 回答