作者work76 (work)
看板Grad-ProbAsk
标题[理工] [OS]-临界区域
时间Fri Oct 2 15:37:21 2009
do {
while(flag[j]);
flag[i]=true;
c.s
flag[i]=false;
r.e
}while(1)
满足临界区域三条件
1.互斥满足
若pi和pj皆想进入c.s,则两者都不能进去
若pi想进入c.s,且pj不想进入c.s,则pi进入c.s
若pi不想进入c.s,且pj想进入c.s,则pj进入c.s
所以pi和pj不会同时进入c.s=>满足互斥
2.不满足进入
若pi和pj皆想进入c.s,则产生死结。
3.bounded waiting满足
如果pi进入c.s,则pj将在while。
如果pi离开c.s,即flag[i]=false,表示pj可以进入c.s.
如果pi离开後又想马上企图进入c.s,则pi将在while。
以保证pj进入c.s,所以pj最多等一次後即可进入c.s
请问,这个答案是否是正确的?谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.137.26.219
1F:推 gensim:第一个互斥并不满足 10/03 01:28
2F:→ gensim:while(flag[0]);while(flag[1]);flag[1]=true;flag[0]=true 10/03 01:30
3F:→ Carbunkl:借标题问 若满足互斥 则不会有Race condition?还是三个 10/03 02:10
4F:→ Carbunkl:都要满足? 10/03 02:10
5F:推 gensim:基本上互斥满足 race condition就算解决 10/04 02:49
6F:→ gensim:但progress和bounded waiting未满足的话又会造成别的问题 10/04 02:50
7F:→ gensim:如starvation或deadlock... 10/04 02:51