Re: [理工] OS 死結成立的條件? (97交大資聯)

看板Grad-ProbAsk作者 (′‧ω‧‵)時間15年前 (2011/01/28 00:47), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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

01/28 00:54, , 1F
RAG那個我知道 老師的確2邊都有講 真是怪了..
01/28 00:54, 1F

01/28 11:09, , 2F
給你推一個 這題我也有疑義 B的解釋很好
01/28 11:09, 2F

01/29 00:44, , 3F
謝謝 要考試了 一起加油!
01/29 00:44, 3F
文章代碼(AID): #1DGQ6xoh (Grad-ProbAsk)
文章代碼(AID): #1DGQ6xoh (Grad-ProbAsk)