我正在準備通過過去考試進行有關操作系統的考試。它主要是關於Unix系統,C編程語言,它提到了很多POSIX,所以最好在這裏提出這個問題。信號量是否需要系統調用?
的問題是:
提供簡單的自旋鎖和/或信號三個缺點。解釋相應的其他機制如何改善問題。
給出一個解釋+ 3個的缺點是:
信號燈需要一個系統調用即使線程可以立即進行。 (0.5 P)另一方面,Spinlocks可以在用戶空間中完全實現,並且不需要系統調用。它們對於短暫的等待時間非常有效。 (0.5 P)
爲什麼信號需要系統調用?他們必須在內核空間嗎?他們是否需要執行特權指令?
需要考慮單處理器和多處理器系統。
我會給你一個提示:什麼是信號量以及如何實現?我建議在一些問題上試圖理解它們,而不是記住答案,至少如果你對這個問題有興趣的話。 –
@RuiFRibeiro我對這個主題感興趣,並且可以考慮在用戶空間中實現它的方式以及在內核空間中實現它的方式。我明白,系統調用是必需的**如果**在信號量上調用'wait()'的進程必須等待(例如信號量被完全使用)並且**如果**一對一線程模型是用於屈服。然而,除此之外,我不明白爲什麼操作系統將不得不介入。該解決方案字面上說:「即使線程可能立即進行,信號也需要系統調用。」 **考試是明天**,所以我會很感激一個快速的答案。 –
你有特殊的系統調用信號量http://www.tldp.org/LDP/lpg/node51.html或作爲一個窮人信號量你甚至可以有一個文件,甚至在共享內存中的變量例如。 ..我會建議一些疑問要與教授澄清,因爲他們經常對這個問題有他們特別的解釋,並給予他們更多的意見。 –