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

作者: kyuudonut (善良老百姓)   2016-09-27 00:13:54
想請問 semaphore 一些問題
就是當一堆人在 wait 某一個 semaphore 時,
一旦有人 signal,那會是誰先跑離 wait 呢?
我想得到的解決方式就是加一個 waiting queue 這樣
所以誰先 wait,之後 signal 便誰先解救
應該是這樣沒錯?
但這題: http://imgur.com/a/lkVWw
大家都在 wait 那邊 wait(s2)
那右邊的 signal 一旦 signal(s2),不就一堆 process 全部逃離 wait 了嗎 @@?
作者: ken52011219 (呱)   2016-09-27 00:24:00
當三個process 以上 就要考量到它的bound waiting否則以我個人認知會產生 race condition但當其中一個process 可以進入時 其他則繼續wait 只是不能保障是哪個得到進入權而如你所說 加入wait queue 可以使bound waiting 成立從1->0其實時間是固定的 當一個變為0時 總會有其中一個process第一名沒解釋清楚 XDD 我的意思應該說是 這幾個process 就是在競速 看誰先拿到權杖把condition 無視 無視 無視 ~關於同步問題 洪逸上這段時過多的程式碼缺乏時間 又偏偏這章大概佔全部筆記的1/3以上 難免會這樣都可以XDD
作者: gigayaya (gigayaya)   2016-09-27 01:43:00
我記得我上次問過,誰先進去這個問題不是同步問題而是要看你底層的wait怎麼製作
作者: krusnoopy (push)   2016-09-27 17:59:00
看誰先拿到CPU,不會同時一堆人擠進wait,wait是atomic指令,至於誰先搶到,黃能富教授的開放式課程說要看OS怎麼設計感謝更正

Links booklink

Contact Us: admin [ a t ] ucptt.com