[理工] semaphore用在c.s. design

看板Grad-ProbAsk作者 (willaimchen)時間9年前 (2016/11/03 17:04), 9年前編輯推噓2(2012)
留言14則, 1人參與, 最新討論串1/1
已知c.s. design需滿足mutual exclusion,progress,bounded-waiting 但使用semaphore的signal()後 所有wait()的process都可以競爭 這樣一來不就有process可能starvation而不滿足bounded-waiting嗎? 我所知道的 wait(s) {while s>=0; s--;} signal(s) {s++;} http://i.imgur.com/N5mvkdr.jpg
補個圖 也就是我不明白為什麼bounded-waiting ok ----- Sent from JPTT on my Asus ASUS_Z00LD. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.17.209 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1478163887.A.C18.html ※ 編輯: fuork888888 (101.10.17.209), 11/03/2016 17:13:27

11/03 18:05, , 1F
Process 都有先來後到的順序 端看CPU Scheduler怎麼
11/03 18:05, 1F
謝謝 看來真有這問題QQ

11/03 18:06, , 2F
決定
11/03 18:06, 2F

11/03 18:13, , 3F
單CPU而言 複數以上Process 會先將process 拉進
11/03 18:13, 3F

11/03 18:14, , 4F
S -> list 後block() 依照給的的Schedule 來wakeup
11/03 18:14, 4F

11/03 18:15, , 5F
若以busy waiting 來看 代表不會將此Procrss停止
11/03 18:15, 5F

11/03 18:16, , 6F
以單CPU的角度來看 也不會有其他的process被執行
11/03 18:16, 6F

11/03 18:28, , 7F
在恐龍本中 C.S Design 的作法被概念式的帶過
11/03 18:28, 7F

11/03 18:30, , 8F
反而是以interrupt 的Semaphore實作為主
11/03 18:30, 8F

11/03 18:31, , 9F
所以我覺得 C.S Design 感覺像是僅限定2個 process@@
11/03 18:31, 9F

11/03 18:32, , 10F
2個以上的process 就會冒出bug來了
11/03 18:32, 10F
※ 編輯: fuork888888 (101.10.17.209), 11/03/2016 19:24:58

11/03 19:25, , 11F
剛剛稍微看一下洪逸的筆記 它也是假設bound waiting
11/03 19:25, 11F

11/03 19:25, , 12F
有Queue使Process 依序排列
11/03 19:25, 12F

11/03 19:27, , 13F
補充關於 NON-BUSY WAITING 也是有Starvation 的問題
11/03 19:27, 13F

11/03 19:28, , 14F
假如Schedule 是使用LIFO了話就有 這是恐龍本提到的
11/03 19:28, 14F
謝謝你詳細的解答 重點就在於要用FIFO的Queue解決 這就是我要的 再次感謝 我也是想說要用queue 只是我的筆記完全沒抄到有這段 哈哈 ※ 編輯: fuork888888 (101.10.17.209), 11/03/2016 20:12:49 ※ 編輯: fuork888888 (101.10.17.209), 11/03/2016 20:27:02
文章代碼(AID): #1O6lslmO (Grad-ProbAsk)