2012-10-12 73 views
1

Linux內核如何處理對procfs的多次讀取/寫入?例如,如果兩個進程一次寫入procfs,一個進程是否排隊(即內核陷阱實際上阻塞了其中一個進程),還是每個內核都運行內核線程?Linux內核Procfs多次讀取/寫入

問題在於,如果你在函數中使用了一個緩衝區(對全局空間是靜態的),你需要保護它還是代碼將按順序運行?

+0

我會看看procfs的現有內核代碼,並做同樣的事情。 –

+2

很確定procfs回調發生在讀/寫過程中。沒有處理線程或排隊涉及。如果你想同步你必須自己做。 –

+0

使用源盧克! – Linuxios

回答

0

這取決於每個procfs文件的實現。沒有人甚至可以給你一個明確的答案,因爲每個驅動程序都可以實現自己的procfs文件夾和文件(你沒有指定任何特定的文件,快速瀏覽http://lxr.free-electrons.com/source/fs/proc/表明有些文件使用鎖)。

無論使用哪種方式,都不能使用全局緩衝區,因爲如果不是內核,上下文切換總是可以發生的,那麼它可以在完成讀取系統調用之後並在開始處理讀取之前捕獲讀取器線程數據。