[理工] [OS] semaphore 些許疑問

看板Grad-ProbAsk作者 (善良老百姓)時間9年前 (2016/09/27 00:13), 9年前編輯推噓5(5015)
留言20則, 3人參與, 最新討論串1/1
想請問 semaphore 一些問題 就是當一堆人在 wait 某一個 semaphore 時, 一旦有人 signal,那會是誰先跑離 wait 呢? 我想得到的解決方式就是加一個 waiting queue 這樣 所以誰先 wait,之後 signal 便誰先解救 應該是這樣沒錯? 但這題: http://imgur.com/a/lkVWw 大家都在 wait 那邊 wait(s2) 那右邊的 signal 一旦 signal(s2),不就一堆 process 全部逃離 wait 了嗎 @@? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.251.85 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1474906437.A.108.html

09/27 00:24, , 1F
當三個process 以上 就要考量到它的bound waiting
09/27 00:24, 1F

09/27 00:26, , 2F
否則以我個人認知會產生 race condition
09/27 00:26, 2F
應該說只要保證互斥就不會有 race condition 了吧?

09/27 00:28, , 3F
但當其中一個process 可以進入時 其他則繼續wait 只
09/27 00:28, 3F

09/27 00:28, , 4F
是不能保障是哪個得到進入權
09/27 00:28, 4F

09/27 00:30, , 5F
而如你所說 加入wait queue 可以使bound waiting 成
09/27 00:30, 5F

09/27 00:30, , 6F
09/27 00:30, 6F
洪逸關於這邊都直接帶過@@

09/27 00:34, , 7F
從1->0其實時間是固定的 當一個變為0時 總會有其中一
09/27 00:34, 7F

09/27 00:34, , 8F
個process第一名
09/27 00:34, 8F
ㄟ 我好像知道我糾結的點在哪惹 XDD 多謝討論

09/27 00:35, , 9F
沒解釋清楚 XDD 我的意思應該說是 這幾個process 就
09/27 00:35, 9F

09/27 00:35, , 10F
是在競速 看誰先拿到權杖
09/27 00:35, 10F

09/27 00:37, , 11F
把condition 無視 無視 無視 ~
09/27 00:37, 11F
要幫你砍掉嗎 XDD

09/27 00:39, , 12F
關於同步問題 洪逸上這段時過多的程式碼缺乏時間 又
09/27 00:39, 12F

09/27 00:39, , 13F
偏偏這章大概佔全部筆記的1/3以上 難免會這樣
09/27 00:39, 13F

09/27 01:05, , 14F
都可以XDD
09/27 01:05, 14F

09/27 01:43, , 15F
我記得我上次問過,誰先進去這個問題不是同步問題而是要
09/27 01:43, 15F

09/27 01:43, , 16F
看你底層的wait怎麼製作
09/27 01:43, 16F
這我知道,但洪逸就是這部分講不多啊... ※ 編輯: kyuudonut (220.132.251.85), 09/27/2016 01:49:29

09/27 17:59, , 17F
看誰先拿到CPU,不會同時一堆人擠進wait,wait是atomic
09/27 17:59, 17F

09/27 17:59, , 18F
指令,至於誰先搶到,黃能富教授的開放式課程說要看OS怎
09/27 17:59, 18F
我覺得這段話有點問題,wait 是否被做成 atomic 應該也是要看OS怎麼設計吧? 但其中裡面 semaphore 值的操作是 atomic 是肯定的 http://stackoverflow.com/questions/13528860/semaphore-wait-and-signal

09/27 17:59, , 19F
麼設計
09/27 17:59, 19F
※ 編輯: kyuudonut (220.132.251.85), 09/27/2016 19:35:54

09/27 20:21, , 20F
感謝更正
09/27 20:21, 20F
文章代碼(AID): #1NwKb548 (Grad-ProbAsk)