[理工] [OS] non-busy waiting semaphore

楼主: kyuudonut (善良老百姓)   2016-09-26 16:45:50
Hi 想请问一下
当初洪逸在教 号志制作 的时候
non-busy 配 cs design,是直接用 entry section & exit section 带过
后面提到 "busy waiting 是否可以完全避免" ,
直接说 entry section 存在 busy waiting
但不是 entry section 也可以使用 sys call 制作吗?
还是老师当时有什么特别的解释@@
谢谢
作者: hopward (hopward)   2016-09-26 20:38:00
他有说虽然用disable interrupt制作可避免,但不适合用在microprocessor system,且风险高,因此很多系统将它设为特权指令
作者: BoSiANg (O(log(n!)))   2016-09-27 00:19:00
我怎么也记得是"Disable Interrupt"跟"Enable Interupt"可是他在教如何设计Entry Sec.时只有讲SW和HW的方法吧?
作者: ken52011219 (呱)   2016-09-27 00:44:00
皆可吧@@ 恐龙本上都有提到突然想起差别了Wakeup() block() 这两个指令是当 signal(S) 大于s wait(S) 小于s使用http://i.imgur.com/zk3qgMN.jpghttp://i.imgur.com/56bYZqT.jpg而disable interrupt &busy waiting 则是使用 MutexLock时的选择作法而已简单来说 它们皆是解决同步问题的tool 但是是不一样的东西恐龙本反而没提起利用interrupt 去实作 semaphore而是利用 block and wakeup去实作个人想法是因为 interrupt Cost太高了 反而直接用这两个sys call 比较好重新整理一下我的思绪 首先在Semaphore 的wait()中 busy waiting 就是指S-- 这点能接受了话
作者: BoSiANg (O(log(n!)))   2016-09-27 01:17:00
http://i.imgur.com/faXrdVP.jpg洪逸那边会说无法避免应该是因为它前面的几个Algo.是定义在用SW及HW制作上,但若用block,wakeup sys. call事实上是可以避免的。是这样吗?
作者: ken52011219 (呱)   2016-09-27 01:20:00
http://i.imgur.com/hMO5akB.jpg 突然好像不太懂你的问题 以笔记上表达应该是这个意思吧
作者: aa06697 (todo se andarà)   2016-09-27 09:29:00
一楼说的应该是multiprocessor吧?microprocessor 有可能是single core 用disable interrupt就没什么问题(还是我记错了 手边没笔记)

Links booklink

Contact Us: admin [ a t ] ucptt.com