[理工] [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使用" target="_blank" rel="nofollow">
" target="_blank" rel="nofollow">
而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
" target="_blank" rel="nofollow">
洪逸那邊會說無法避免應該是因為它前面的幾個Algo.是定義在用SW及HW製作上,但若用block,wakeup sys. call事實上是可以避免的。是這樣嗎?
作者: ken52011219 (呱)   2016-09-27 01:20:00
" target="_blank" rel="nofollow">
突然好像不太懂你的問題 以筆記上表達應該是這個意思吧
作者: 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