Linux

linux核心的fix-mapping是如何實現的?

  • September 21, 2021

在某些配置中,每個程序記憶體的前 1G 空間屬於核心。而在1G空間中,低896M部分直接映射到物理地址,稱為fix-mapping area。

但我很困惑它是如何實現的。因為cpu只能訪問線性地址,然後MMU將其解釋為物理地址。當核心訪問該修復映射區域時會發生什麼?它會跳過 MMU 嗎?

核心也在 CPU 上執行,使用線性地址。它不會跳過 MMU。

對永久映射的訪問與任何其他訪問一樣發生:使用頁表映射相應的物理頁。當使用永久映射時,這是在引導期間由permanent_kmaps_init(在 32 位 x86 上)設置的。

另請參閱MMU 在 Unix/Linux 核心中嗎?還是只是在具有自己記憶體的硬體設備中?以及(為什麼)Linux 核心對其虛擬地址空間使用身份映射?

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