作者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
推 gensim:第一個互斥並不滿足 10/03 01:28
→ gensim:while(flag[0]);while(flag[1]);flag[1]=true;flag[0]=true 10/03 01:30
→ Carbunkl:借標題問 若滿足互斥 則不會有Race condition?還是三個 10/03 02:10
→ Carbunkl:都要滿足? 10/03 02:10
推 gensim:基本上互斥滿足 race condition就算解決 10/04 02:49
→ gensim:但progress和bounded waiting未滿足的話又會造成別的問題 10/04 02:50
→ gensim:如starvation或deadlock... 10/04 02:51