Linux
linux核心是否使用虛擬記憶體(用於其數據)?
linux 核心是否為其資料結構(頁表、描述符等)使用虛擬記憶體?進一步來說:
核心空間地址是否在 MMU 中轉換(頁表遍歷)?
核心記憶體可以換出嗎?
對核心資料結構的記憶體訪問會導致頁面錯誤嗎?
linux和其他unix在這方面有區別嗎?
核心空間地址是否在 MMU 中轉換(頁表遍歷)?
是的,所有地址都在 MMU 中翻譯;請參閱MMU 在 Unix/Linux 核心中嗎?還是只是在具有自己記憶體的硬體設備中?詳情。
核心記憶體可以換出嗎?
理論上可以設計一個核心,以便它可以被換出。在實踐中這很困難;特別是 Linux 核心不能被換出。然而,核心中的一些程式碼路徑確實必須處理頁面輸入;請參閱當核心映射到與程序本身相同的虛擬地址空間時,為什麼需要
copy_from_user()
和copy_to_user()
?例如。對核心資料結構的記憶體訪問會導致頁面錯誤嗎?
在大多數情況下(如果不是所有情況),如果發生這種情況,將導致核心恐慌。所以是的,它可能會發生,但這將是一個錯誤。
linux和其他unix在這方面有區別嗎?
據我所知,其他(目前)Unix 風格的實現是相似的。早期的 Unix 不支持基於虛擬記憶體的交換(即分頁任意頁面),所以這不是問題。