看板 Grad-ProbAsk 關於我們 聯絡資訊
http://i.imgur.com/Jx1eItZ.jpg 14題 不太懂整個moniter的流程,哪位神人大大可以解釋一下>"< -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.99 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1481980796.A.CC8.html
Transfat: 是不是忘記貼啥了12/17 22:01
newpuma: ……12/17 22:29
lrt89604: 這真的要神人才知道了12/17 23:26
hopward: 這連神人都沒辦法 應該要神才有辦法了12/18 00:26
fsab00070875: 所以我說的那個醬汁呢?12/18 02:59
fsab00070875: 打錯,圖呢?12/18 03:00
抱歉我漏了!已附上感恩>< ※ 編輯: ssssIssss (140.112.25.105), 12/18/2016 11:14:20
aa06697: 這個code是hoare monitor: process在signal後會讓被救的p12/18 15:01
aa06697: rocess先進來然後自己進去一個特別的queue(優先權比condi12/18 15:01
aa06697: tion readyqueue還高的queue)12/18 15:01
aa06697: next_count用來記錄有多少個「救命恩人」 因為在process12/18 15:03
aa06697: wait的時候 代表cpu要給其他人 而此時若有救命恩人要優先12/18 15:03
aa06697: 救他 沒有才讓其他在等待的process進入monitor12/18 15:03
aa06697: 所以lineA lineB 就跟最左邊那格的code一樣12/18 15:04
aa06697: 然後wait的process會卡在wait(x_sem) lineC就是signal(x_12/18 15:08
aa06697: sem) 要救在wait的process 然後wait(next) 就是讓救命恩12/18 15:08
aa06697: 人進去特別queue的用途12/18 15:08
aa06697: 補充一下 semaphore的wait跟monitor的wait意義不太一樣喔12/18 15:35
aa06697: 一個是搶執行權 一個是強迫去condition variable的queue12/18 15:35
aa06697: 休息 12/18 15:35
yupog2003: 看完樓上的講解感覺又好像再把洪逸講的聽了一遍,感謝 12/18 16:25
那我想再問一下關於兩種wait的不同@@ aa大是指若出現在code裡的wait,是在搶執行權,所以就如同最基本的那樣加一減一就好 ? 而在monitor上的wait框,就是由一連串code所組成,用來安排process進入queue? ※ 編輯: ssssIssss (140.112.4.190), 12/19/2016 13:31:03
aa06697: yes 12/19 15:21