推 hopward: 他有說雖然用disable interrupt製作可避免,但不適合用在 09/26 20:38
→ hopward: microprocessor system,且風險高,因此很多系統將它設為 09/26 20:38
→ hopward: 特權指令 09/26 20:38
可是,他不是用 block 及 wakeup(這個不確定) 的 sys. call 製作嗎?
應該不是 disable interrupt 的指令
推 BoSiANg: 我怎麼也記得是"Disable Interrupt"跟"Enable Interupt" 09/27 00:19
筆記支援: http://imgur.com/a/J9Phf
我記得 CS Design 就是拿來取代 interrupt 的 solution?
應該不會 CS Design 裡的 entry section 反而用 interrupt 去弄吧
推 BoSiANg: 可是他在教如何設計Entry Sec.時只有講SW和HW的方法吧? 09/27 00:39
SW 和 HW 好像都是拿來做 busy waiting 的方法?
推 ken52011219: 皆可吧@@ 恐龍本上都有提到 09/27 00:44
請問你指哪裡皆可呢
※ 編輯: kyuudonut (220.132.251.85), 09/27/2016 00:50:01
推 ken52011219: 突然想起差別了 09/27 00:49
→ ken52011219: Wakeup() block() 這兩個指令是當 signal(S) 大於s w 09/27 00:50
→ ken52011219: ait(S) 小於s使用 09/27 00:50
→ ken52011219: 而disable interrupt &busy waiting 則是使用 Mutex 09/27 00:57
→ ken52011219: Lock時的選擇作法而已 09/27 00:57
這邊我想要整理一下 自己也一直搞混
這邊的問題應該分為 (1) semaphore 的 wait 及 signal 的製作方式
(2) semaphore值 的互斥控制
其中 (1) 就是你貼的圖(筆記也有),他透過這兩個 sys call 去實作 wait 及 signal
(non-busy waiting),也可以透過 busy waiting 的方式去做。
(2) 就是單純的互斥控制,可以透過 disable interrupt 及 CS Design 去實作
其中 CS Design 可以有 busy waiting 及 non-busy waiting。
打到這邊,不知道我的理解有沒有問題? 而我這篇主要的問題點是 (2)
因為洪逸自己上 CS design 時就有提到 non-busy waiting 的實作方法
推 ken52011219: 簡單來說 它們皆是解決同步問題的tool 但是是不一樣 09/27 00:59
→ ken52011219: 的東西 09/27 00:59
→ ken52011219: 恐龍本反而沒提起利用interrupt 去實作 semaphore 09/27 01:02
→ ken52011219: 而是利用 block and wakeup去實作 09/27 01:02
→ ken52011219: 個人想法是因為 interrupt Cost太高了 反而直接用這 09/27 01:04
→ ken52011219: 兩個sys call 比較好 09/27 01:04
※ 編輯: kyuudonut (220.132.251.85), 09/27/2016 01:06:21
→ ken52011219: 重新整理一下我的思緒 首先在Semaphore 的wait() 09/27 01:13
→ ken52011219: 中 busy waiting 就是指S-- 這點能接受了話 09/27 01:13
→ BoSiANg: 洪逸那邊會說無法避免應該是因為它前面的幾個Algo.是定義 09/27 01:17
→ BoSiANg: 在用SW及HW製作上,但若用block,wakeup sys. call 09/27 01:17
→ BoSiANg: 事實上是可以避免的。 09/27 01:17
→ BoSiANg: 是這樣嗎? 09/27 01:17
我覺得有可能是這樣
→ ken52011219: 的問題 以筆記上表達應該是這個意思吧 09/27 01:20
是指我嗎? @@
推 aa06697: 一樓說的應該是multiprocessor吧?microprocessor 有可 09/27 09:29
→ aa06697: 能是single core 用disable interrupt就沒什麼問題 09/27 09:29
→ aa06697: (還是我記錯了 手邊沒筆記) 09/27 09:36
應該是筆誤,會有問題的是 multiprocessor 沒錯
※ 編輯: kyuudonut (220.132.251.85), 09/27/2016 11:06:51