[理工] OS同步 disable interrupt 問題

看板Grad-ProbAsk作者 (ponny)時間7年前 (2016/10/06 19:07), 編輯推噓9(9027)
留言36則, 5人參與, 最新討論串1/1
如這題 我知道disable interrupt 不適合用在多處理器上 但是A與B選項應該都不適合吧 A)若只disable first CPU,這樣第二顆CPU不是也可以去搶資源? B)若讓其他cpu disable會造成效能降低 請問大大們有更好的解釋嗎? 謝謝! http://i.imgur.com/zlV97P6.jpg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.126.194.203 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1475752041.A.131.html

10/06 20:51, , 1F
因為p1 p2 p3 使用同一個互斥資源的關係吧
10/06 20:51, 1F

10/06 20:59, , 2F
我的想法啦,首先:題目說目前就只有這三個process在run
10/06 20:59, 2F

10/06 20:59, , 3F
,而p1p2p3不會切換cpu去搶cpu,所以你a的問題不會發生
10/06 20:59, 3F

10/06 20:59, , 4F
,那這樣問題就是p1跟p2要做防止race condition,所以只
10/06 20:59, 4F

10/06 20:59, , 5F
要p1跟p2用disable interrupt就好了,(B)如果p2沒有disa
10/06 20:59, 5F

10/06 20:59, , 6F
ble interrupt的話,cpu可能途中被p1搶走而race conditi
10/06 20:59, 6F

10/06 20:59, , 7F
on
10/06 20:59, 7F

10/06 21:10, , 8F
抱歉想錯了,(B)最不適合的原因應該就是因為把disable i
10/06 21:10, 8F

10/06 21:10, , 9F
nterrupt用在multiprocessor上,相比起來(C)適合多了,
10/06 21:10, 9F

10/06 21:10, , 10F
所以最不適合的是(B)
10/06 21:10, 10F

10/06 22:53, , 11F
注意(A)後面的受詞 to synchronize "P1 and P2"
10/06 22:53, 11F

10/06 22:54, , 12F
(A)的卻會發生 race condition 但這不是(A)選項想問der
10/06 22:54, 12F

10/07 00:12, , 13F
關鍵點在 Disable interrupt 是呼叫 OS
10/07 00:12, 13F

10/07 00:13, , 14F
一個OS 控制多個CPU 因此我們通常不會在不同的CPU處
10/07 00:13, 14F

10/07 00:14, , 15F
理同步問題 因為如你所知 太耗CPU時間 減少CPU可用度
10/07 00:14, 15F

10/07 00:15, , 16F
而為何 A可以 就單純處理P1 P2 同步問題
10/07 00:15, 16F

10/07 00:16, , 17F
今天處理 P1 P2 的同步問題 代表 資源目前在processo
10/07 00:16, 17F

10/07 00:17, , 18F
r1 的手上 而不再Process3所在的 Processor2
10/07 00:17, 18F

10/07 00:18, , 19F
因此使用 Disable interrupt 不會造成 Processor2的
10/07 00:18, 19F

10/07 00:18, , 20F
不便 反正沒資源Process 3還是要 wait
10/07 00:18, 20F

10/07 00:21, , 21F
講這麼多 忘記提最重要的點 Interrupt會造成多CPU停
10/07 00:21, 21F

10/07 00:21, , 22F
止 而不是只造成單一CPU 被intterupt
10/07 00:21, 22F

10/07 00:25, , 23F
更正一下 通常不會使用硬體去解決不同CPU的同步問題
10/07 00:25, 23F

10/07 09:10, , 24F
10/07 09:10, 24F

10/07 09:11, , 25F
老師有說要disable 所以CPU的interrupt 才可以防止所
10/07 09:11, 25F

10/07 09:11, , 26F
以題目這邊指的都是disable所有CPU的情況?
10/07 09:11, 26F

10/07 10:02, , 27F
沒錯 像是 Linux 以及 interprocceosr System 都是
10/07 10:02, 27F

10/07 10:12, , 28F
好久沒看筆記了 QQ 現在發現洪逸講的比想像中的多
10/07 10:12, 28F

10/07 11:05, , 29F
好的,如同題目所說這題主要是探討disable interrupt
10/07 11:05, 29F

10/07 11:05, , 30F
所造成的效能降低,所以最不恰當的應該要選b(因為效能
10/07 11:05, 30F

10/07 11:05, , 31F
降低
10/07 11:05, 31F

10/07 14:06, , 32F
稍微補充一下 Linux 通常使用 Sempahore(interrupt)
10/07 14:06, 32F

10/07 14:07, , 33F
以及 Spin Lock
10/07 14:07, 33F

10/07 22:34, , 34F
linux可以disable單一cpu的interrupt的
10/07 22:34, 34F

10/07 22:35, , 35F
10/07 22:35, 35F

10/08 00:12, , 36F
這段感覺是讓 Interrupt 的指令強迫停留在某CPU @@
10/08 00:12, 36F
文章代碼(AID): #1NzZ1f4n (Grad-ProbAsk)