[爆卦]死結四個條件是什麼?優點缺點精華區懶人包

為什麼這篇死結四個條件鄉民發文收入到精華區:因為在死結四個條件這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者YankSC (′‧ω‧‵)看板Grad-ProbAsk標題Re: [理工] OS 死結成立的條...



※ 引述《cutesteven (原野漫遊)》之銘言:
: 我想問的是
: 死結成立的4個條件:1.mutual exclusion
: 2.hold & wait
: 3.no preemption
: 4.circular waiting
: 到底是"必要"條件or"充要"條件??
: 恐龍原文7版是寫"必要條件"而系統同時滿足這些條件"can"arise..
: (can的意思絕對跟must/will不同,但這裡不確定課本要表達的@@)
: 而洪X上課還特別強調都滿足不一定會Deadlock..
: 但我沒印象他說用什麼來證明~
: 有請神人解釋?
: ps.來源題目97交大資聯OS第2-(3)http://ppt.cc/EP_E (題目寫"will arise")
: 到底要選誰?! 尤其是A和B

若四個條件同時發生,死結發生應該是沒有疑義的。

詳閱:http://en.wikipedia.org/wiki/Deadlock#Necessary_conditions

如果加上Circular Waiting的話,即可就可保證Deadlock Situation

或者你上課時是記成Resource Allocation Graph中有 Cycle 但不一定有死結?


B選項以利用 Semaphore 製作Hoare Monitor 為例

x_count = x_count +1 ;
if Next_count>0 then signal(Next) ;
x.wait else signal(mutex);
wait(x_sem) ;
x_count =x_count -1 ;

if x.count>0 then
begin
Next_count = Next_count + 1 ;
x.signal signal (x_sem) ;
wait (Next) ;
Next_count = Next_count -1 ;
end ;

都有作存取判斷。

或是以直觀來想,若是沒有Process在wait就執行signal的話

那存取的變數就平白多加一了

在此變數為 2 的情況之下 之後存取時

wait就允許有兩個Process同時進入Critical Section了 -> 違反Mutual Exclusion


- -

有錯請指教 謝謝



--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.176.27
cutesteven:RAG那個我知道 老師的確2邊都有講 真是怪了.. 01/28 00:54
QoiiwWe:給你推一個 這題我也有疑義 B的解釋很好 01/28 11:09
YankSC:謝謝 要考試了 一起加油! 01/29 00:44

你可能也想看看

搜尋相關網站