[理工] 作業系統 semaphore

作者: mozzan (mozzan)   2014-07-21 23:59:57
大家好,有個關於semaphore概念想請教釐清
就是 semaphore 的 non busy-waiting 版本
也就是 block/wait 版本的 semaphore,
為什麼講義和課本上都有一段說
"即便是 Block/Wakeup + queue 的方式,也頂多是將busy-waiting由定義端
移到製作端"
我不懂的是 Block/Wakeup + queue 的方式不是已經排除了busy-waiting了嗎?
為何又會說是"表面上"呢?
wait(S) {
S.value = S.value - 1;
if(S.value < 0) {
add this process to S.list;
block(P);
作者: A4P8T6X9 (殘廢的名偵探)   2014-07-22 07:17:00
要確保不會同時執行wait跟 signal,本身就要busy-waiting,而不是在 wait中有。
作者: mozzan (mozzan)   2014-07-23 00:25:00
意思是不能有兩隻P同時進入wait,所以即使wait內部看起是用block&wake,但實際上還是會用到busy waiting的方法嗎?
作者: A4P8T6X9 (殘廢的名偵探)   2014-07-23 09:35:00
y
作者: mozzan (mozzan)   2014-07-23 13:35:00
感謝!!

Links booklink

Contact Us: admin [ a t ] ucptt.com