Linux
程序的核心虛擬記憶體是否包含程序特定的數據?
我不太明白 CS:APP 書中的這張圖片。
它顯示了一個程序的核心虛擬記憶體如何具有與其他程序不同的區域。
這是否意味著程序 A的上下文中的核心將無法在程序 B的上下文中看到程序特定的數據?
核心可以通過上下文切換到程序 B並使用B的頁表來訪問此數據的唯一方法,還是可以從程序 A訪問?
你的困惑是可以理解的;該圖是錯誤的,如本書的勘誤表所示:
頁。829,圖 9.26。地址空間的核心部分對於每個程序都是相同的。每個程序的核心虛擬記憶體沒有不同的部分。
(特別是在 x86-64 上,這是圖表中使用的體系結構 - 如參考所示
%rsp
- 核心具有物理記憶體的完整映射,因此記憶體中的任何頁面都會出現在核心的虛擬記憶體中。請參閱裡面的內容64位Linux程序的虛擬記憶體的核心部分?)