Kernel

64位Linux程序的虛擬記憶體的核心部分是什麼?

  • July 15, 2020

我遇到了這個問題:

在 Linux 程序的虛擬記憶體空間中擁有核心部分有什麼用?

並根據答案和對答案的評論:

核心記憶體映射包括所有物理記憶體的直接映射,因此記憶體中的所有內容都出現在那裡;它還包括核心、模組等的單獨映射,因此包含核心的物理地址至少出現在兩個不同的映射中

這是真的?我找不到任何來源或參考,為什麼它會包含整個物理記憶體的映射,然後又會有一個單獨的核心模組映射?這不是多餘的嗎?

有人可以簡單地解釋一下 64 位 Linux 中程序虛擬記憶體的核心部分是什麼嗎?並請提供答案來源!因為我在任何書籍或論文中都找不到與此相關的任何內容。

x86-64 上的核心記憶體映射記錄在核心本身中。核心映射

  • 使用者空間(用於目前程序)
  • PTI 資料結構
  • 所有物理記憶體
  • 核心的資料結構,在不同的塊中,帶有用於 ASLR 的漏洞
  • 核心本身
  • 它的模組

擁有物理記憶體的完整映射很方便,但與其產生的安全風險和地址空間負擔相比,它的相關性存在爭議(因為物理記憶體實際上被限制為地址空間的一半;這促使最近的擴展到具有 56 位地址的五級頁表)。

引用自:https://unix.stackexchange.com/questions/512849