在某些配置中,每个进程内存的顶部 1G 空间属于内核。而在1G空间中,低896M部分直接映射到物理地址,称为固定映射区域。
但我对它是如何实现的感到困惑。因为cpu只能访问线性地址,然后由MMU解释为物理地址。当内核访问该修复映射区域时会发生什么?它会跳过MMU吗?
答案1
内核也使用线性地址在 CPU 上运行。它不会跳过 MMU。
对永久映射的访问就像任何其他访问一样:使用页表映射相应的物理页。当使用永久映射时,这是在引导期间设置的permanent_kmaps_init
(在 32 位 x86 上)。
也可以看看MMU 是在 Unix/Linux 内核内部吗?或者只是在有自己的内存的硬件设备中?和(为什么)Linux 内核对其虚拟地址空间使用恒等映射?