[理工] [OS] 100台大資工

看板Grad-ProbAsk作者 (GnCtIlike)時間13年前 (2013/01/30 12:03), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串1/1
想問一下觀念@@ 100台大OS有一題說,設計一個防race condition的方法,然後不能有polling 看板上解答是說: 這意思是,不能占用cpu time,也就是不能busy waiting 然後翻了一下洪逸筆記,洪逸說不使用busy waiting的方法就是signal(s),wait(s) 可是semaphore的wait(s) ,不是也是busy waiting?? wait(){ while(s<=0) do no-op; s=s-1; } 那為什麼說semaphore是不使用busy waiting的方法呢?? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.66.184

01/30 12:11, , 1F
可以用disable interrupt來實作
01/30 12:11, 1F

01/30 12:32, , 2F
semaphore可以用spinlock或blocking的做法來定義,第一種會有
01/30 12:32, 2F

01/30 12:32, , 3F
busy-loop 但block方式使用wating queue就不會有
01/30 12:32, 3F

01/30 12:52, , 4F
了解! 感謝~~
01/30 12:52, 4F
文章代碼(AID): #1H29jzK1 (Grad-ProbAsk)