看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《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