Re: [理工] [OS] 97台大電機
這題正解應該是都滿足,
解答之所以會說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
08/01 00:40, 1F
→
08/01 00:41, , 2F
08/01 00:41, 2F
→
08/01 00:42, , 3F
08/01 00:42, 3F
→
08/01 00:42, , 4F
08/01 00:42, 4F
推
08/01 01:11, , 5F
08/01 01:11, 5F
推
08/01 01:31, , 6F
08/01 01:31, 6F
推
08/01 01:42, , 7F
08/01 01:42, 7F
→
08/01 12:51, , 8F
08/01 12:51, 8F
推
08/01 12:57, , 9F
08/01 12:57, 9F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 5 篇):
理工
4
5