[理工] conditional critical region 實作

作者: joeboy (揪立)   2016-11-27 21:32:34
http://i.imgur.com/ZgQbPOn.jpg
各位大大小弟想問看看
有關conditional critical region 用 semaphore 實作的部分
圖片中第二點
想問看看模擬部分
如果sleep中有P1 P2 P3的話
什麼條件會觸發P1進入retry 然後依序wakeup2 3呢?
因為是重考生所以讀自己的筆記突然忘記怎麼觸發的
硬幹了半個小時還是沒有解答
再麻煩各位神人幫忙解答,謝謝
作者: ken52011219 (呱)   2016-11-28 22:35:00
思考了一下,你們討論的跟我思考的只有一點不同P_1是如何得到Signal(retry)的「第一個」進入retry的是直接進入沒錯而當「不同批」的Process進入時 若第一批的process已經在retry區 , 下一批才剛在mutex等時 就是如你們所說的 等到下一批的最後一個process進入retry區retry 才signal 由1變0
作者: joeboy (揪立)   2016-11-28 22:20:00
剛剛跟朋友討論完,好像只要有一個人條件成立完成之後就會叫醒sleep中的人進入retry,接下來就會全部叫醒sleep的人,等到sleep中沒有人之後最後一個進入retry的會signal第一個去check B條件
作者: ken52011219 (呱)   2016-11-28 20:13:00
剛剛有試著TRACE 但太難呈現了直接放棄因為一開始retry 的初始值就是 0 了 P1直接進去當P1做完 end;之後 ....s;... 下方會if else判定要signal哪一個, mutex、sleep 會在做的過程中為0只剩下RETRY 為 2 因此signal(retry)P2 做完同上昨天混進模擬考考試太累所以沒看 同為重考生加油 QQ看錯 mutex 為 1 且不在if判定式內 所以無關

Links booklink

Contact Us: admin [ a t ] ucptt.com