Re: [理工] [OS] 97台大電機

看板Grad-ProbAsk作者 (拜占庭)時間14年前 (2011/07/31 23:58), 編輯推噓4(405)
留言9則, 1人參與, 最新討論串2/5 (看更多)
這題正解應該是都滿足, 解答之所以會說progress不滿足,我猜是漏看了一行: We assume that each line of statement in the algorithm is atomic. 而原PO似乎也犯了同樣錯誤,沒有把題目該行附上, atomic是指該行指令是一氣呵成完成的,也就是中途不會受到干擾 所以如果不是atomic,則 ticket[p] = count = count + 1; 可能會使兩process寫入count的值時因順序交錯而產生race condition的問題 導致出現相同的count值(或ticket[p]值) 於是兩個process都會卡在while loop, 因此不滿足progress(無法在有限時間決定誰進入CS) 如果加上atomic這個條件,則不會發生上述問題 而mutual exclusion滿足是因為兩ticket值比較一定有一個較小一個較大, 只有一個能進入CS bounded waiting滿足是因為剛從CS出來的process若想再次進入, ticket的值會是前一次count值加一,一定較大,會使另一process進入CS 因此三條件皆滿足 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.254.139.102

08/01 00:40, , 1F
拍謝 雞婆一點幫你修正一下^^" 是count值被assign兩次後兩
08/01 00:40, 1F

08/01 00:41, , 2F
邊都抓到同樣的值當ticket 不是會出現相同的count值
08/01 00:41, 2F

08/01 00:42, , 3F
因為count是global vairable這邊語意這樣會有點問題^^"
08/01 00:42, 3F

08/01 00:42, , 4F
不過我想你的意思就是我說的這樣啦 sorry雞婆了XD
08/01 00:42, 4F

08/01 01:11, , 5F
而且我覺得mutual exclusion不滿足
08/01 01:11, 5F

08/01 01:31, , 6F
對不起,你的文章我沒看完整,atomic下的確是都滿足
08/01 01:31, 6F

08/01 01:42, , 7F
...搞了半天還是洪傑對了,看我的第二篇回文吧^^"
08/01 01:42, 7F

08/01 12:51, , 8F
上面那行當我沒說XD  你是對的!
08/01 12:51, 8F

08/01 12:57, , 9F
這個case有加atomic完全就是Software solution algo3的翻版
08/01 12:57, 9F
文章代碼(AID): #1EDNktW6 (Grad-ProbAsk)
文章代碼(AID): #1EDNktW6 (Grad-ProbAsk)