Linux
linux核心的fix-mapping是如何實現的?
在某些配置中,每個程序記憶體的前 1G 空間屬於核心。而在1G空間中,低896M部分直接映射到物理地址,稱為fix-mapping area。
但我很困惑它是如何實現的。因為cpu只能訪問線性地址,然後MMU將其解釋為物理地址。當核心訪問該修復映射區域時會發生什麼?它會跳過 MMU 嗎?
核心也在 CPU 上執行,使用線性地址。它不會跳過 MMU。
對永久映射的訪問與任何其他訪問一樣發生:使用頁表映射相應的物理頁。當使用永久映射時,這是在引導期間由
permanent_kmaps_init
(在 32 位 x86 上)設置的。另請參閱MMU 在 Unix/Linux 核心中嗎?還是只是在具有自己記憶體的硬體設備中?以及(為什麼)Linux 核心對其虛擬地址空間使用身份映射?