[理工] conditional critical region 實作

看板Grad-ProbAsk作者 (揪立)時間9年前 (2016/11/27 21:32), 編輯推噓0(0019)
留言19則, 2人參與, 最新討論串1/1
http://i.imgur.com/ZgQbPOn.jpg
各位大大小弟想問看看 有關conditional critical region 用 semaphore 實作的部分 圖片中第二點 想問看看模擬部分 如果sleep中有P1 P2 P3的話 什麼條件會觸發P1進入retry 然後依序wakeup2 3呢? 因為是重考生所以讀自己的筆記突然忘記怎麼觸發的 硬幹了半個小時還是沒有解答 再麻煩各位神人幫忙解答,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.7.244 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1480253556.A.890.html

11/28 20:13, , 1F
剛剛有試著TRACE 但太難呈現了直接放棄
11/28 20:13, 1F

11/28 20:13, , 2F
因為一開始retry 的初始值就是 0 了 P1直接進去
11/28 20:13, 2F

11/28 20:14, , 3F
當P1做完 end;之後 ....s;... 下方會if else判定
11/28 20:14, 3F

11/28 20:15, , 4F
要signal哪一個, mutex、sleep 會在做的過程中為0
11/28 20:15, 4F

11/28 20:16, , 5F
只剩下RETRY 為 2 因此signal(retry)
11/28 20:16, 5F

11/28 20:16, , 6F
P2 做完同上
11/28 20:16, 6F

11/28 20:17, , 7F
昨天混進模擬考考試太累所以沒看 同為重考生加油 QQ
11/28 20:17, 7F

11/28 20:20, , 8F
看錯 mutex 為 1 且不在if判定式內 所以無關
11/28 20:20, 8F

11/28 22:20, , 9F
剛剛跟朋友討論完,好像只要有一個人條件成立完成之後就
11/28 22:20, 9F

11/28 22:20, , 10F
會叫醒sleep中的人進入retry,接下來就會全部叫醒sleep
11/28 22:20, 10F

11/28 22:20, , 11F
的人,等到sleep中沒有人之後最後一個進入retry的會sign
11/28 22:20, 11F

11/28 22:20, , 12F
al第一個去check B條件
11/28 22:20, 12F

11/28 22:35, , 13F
思考了一下,你們討論的跟我思考的只有一點不同
11/28 22:35, 13F

11/28 22:35, , 14F
P_1是如何得到Signal(retry)的
11/28 22:35, 14F

11/28 22:36, , 15F
「第一個」進入retry的是直接進入沒錯
11/28 22:36, 15F

11/28 22:37, , 16F
而當「不同批」的Process進入時 若第一批的process
11/28 22:37, 16F

11/28 22:38, , 17F
已經在retry區 , 下一批才剛在mutex等時 就是如你們
11/28 22:38, 17F

11/28 22:39, , 18F
所說的 等到下一批的最後一個process進入retry區
11/28 22:39, 18F

11/28 22:39, , 19F
retry 才signal 由1變0
11/28 22:39, 19F
文章代碼(AID): #1OEk1qYG (Grad-ProbAsk)