Kernel
64位Linux程序的虛擬記憶體的核心部分是什麼?
我遇到了這個問題:
在 Linux 程序的虛擬記憶體空間中擁有核心部分有什麼用?
並根據答案和對答案的評論:
核心記憶體映射包括所有物理記憶體的直接映射,因此記憶體中的所有內容都出現在那裡;它還包括核心、模組等的單獨映射,因此包含核心的物理地址至少出現在兩個不同的映射中
這是真的?我找不到任何來源或參考,為什麼它會包含整個物理記憶體的映射,然後又會有一個單獨的核心模組映射?這不是多餘的嗎?
有人可以簡單地解釋一下 64 位 Linux 中程序虛擬記憶體的核心部分是什麼嗎?並請提供答案來源!因為我在任何書籍或論文中都找不到與此相關的任何內容。
x86-64 上的核心記憶體映射記錄在核心本身中。核心映射
- 使用者空間(用於目前程序)
- PTI 資料結構
- 所有物理記憶體
- 核心的資料結構,在不同的塊中,帶有用於 ASLR 的漏洞
- 核心本身
- 它的模組
擁有物理記憶體的完整映射很方便,但與其產生的安全風險和地址空間負擔相比,它的相關性存在爭議(因為物理記憶體實際上被限制為地址空間的一半;這促使最近的擴展到具有 56 位地址的五級頁表)。