[理工] [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