2012-07-18 42 views
2

如何同時保護用戶進程和內核進程的共享資源?這是非常罕見的情況。我在採訪中被問到這個問題。 TIA如何同時保護用戶進程和內核進程的共享資源?

+0

您無法保護內核中的任何內容。它可以控制一切。 – Linuxios 2012-07-18 19:15:16

+0

您可以嘗試標記資源頁面(假設它是內存資源)不可訪問。我想這必須在內核中完成,因爲用戶空間權限可能不會影響內核。 – fork0 2012-07-18 21:34:19

+0

@Linuxios,這是一般性聲明。但總的來說,我們使用了幾個鎖定機制(當然,只在合作環境下),比如自旋鎖,信號量,互斥鎖,可能會使用某些條件信號等。我的查詢僅與此上下文相關(僅限於) 。謝謝 – kannah 2012-07-19 05:33:24

回答

0

那麼,它可以通過多種方式完成。 一種這樣的方式是

系統調用
創建兩個系統調用,一個獲得鎖和一個釋放鎖。如果用戶進程想訪問共享資源,它將調用獲取鎖定系統調用。如果系統調用成功返回,用戶進程可以訪問共享資源。當用戶進程完成時,它會通過調用釋放系統調用來釋放鎖。系統調用自己獲取版本spinlock_tmutex_t(或任何其他鎖定機制)。想要訪問共享資源的內核進程必須使用spin_lock/spin_unlockmutex_lock/mutex_unlock來獲取相同的鎖。

正如@Damon指出的那樣,這是非常普遍的問題,您應該向面試中提出具體問題,以便給出具體答案。

相關問題