Linux内核的修复映射是如何实现的?

Linux内核的修复映射是如何实现的?

在某些配置中,每个进程内存的顶部 1G 空间属于内核。而在1G空间中,低896M部分直接映射到物理地址,称为固定映射区域。

但我对它是如何实现的感到困惑。因为cpu只能访问线性地址,然后由MMU解释为物理地址。当内核访问该修复映射区域时会发生什么?它会跳过MMU吗?

答案1

内核也使用线性地址在 CPU 上运行。它不会跳过 MMU。

对永久映射的访问就像任何其他访问一样:使用页表映射相应的物理页。当使用永久映射时,这是在引导期间设置的permanent_kmaps_init(在 32 位 x86 上)。

也可以看看MMU 是在 Unix/Linux 内核内部吗?或者只是在有自己的内存的硬件设备中?(为什么)Linux 内核对其虚拟地址空间使用恒等映射?

相关内容