gpt4 book ai didi

Linux 页表管理和 MMU

转载 作者:IT王子 更新时间:2023-10-29 00:20:01 26 4
gpt4 key购买 nike

我有一个关于 linux 内核和 MMU 之间关系的问题。我现在明白了 linux 内核管理虚拟内存地址和物理内存地址之间的页表。同时x86架构中有MMU管理虚拟内存地址和物理内存地址之间的页表。如果 MMU 出现在 CPU 附近,内核还需要处理页表吗?

这个问题可能比较傻,但另一个问题是,如果MMU负责内存空间,谁来管理高位内存和低位内存?我相信内核将从 MMU(32 位中的 4GB)接收虚拟内存的大小,然后内核将在虚拟地址中区分用户空间和内核空间。我对么?还是完全错误?

提前致谢!

最佳答案

操作系统和 MMU 页面管理职责是同一机制的两个方面,存在于体系结构和微体系结构之间的边界上。

第一面定义了硬件和在其上运行的软件(在本例中为操作系统)之间的“契约”——如果你想使用虚拟内存,你需要构建和维护一个页表,如中所述契约(Contract)。另一方面,MMU 端是一个硬件单元,负责执行地址转换的硬件任务。这可能包括也可能不包括硬件优化,这些通常是隐藏的,并且可以以各种方式实现以在引擎盖下运行,只要它维护契约(Contract)的硬件方面。

理论上,MMU 可以决定为每次翻译(页面遍历)发出一组内存访问,以实现所需的行为。然而,由于它是一个性能关键元素,大多数 MMU 通过在 TLB 中缓存先前页面遍历的结果来优化它,就像缓存存储先前访问的结果一样(实际上,在某些实现中,缓存本身也可能存储一些对页表的访问,因为它通常驻留在可缓存的内存中)。 MMU 可以管理多个 TLB(大多数实现将数据页和代码页分开,有些具有二级 TLB),并从那里提供翻译,除了更快的访问时间之外,您不会注意到这一点。

还应该注意的是,硬件必须防止许多极端情况,这些情况可能会损害以前翻译的这种 TLB“缓存”的一致性,例如页面别名或在使用过程中重新映射。在某些机器上,更糟糕的情况甚至需要大量的冲洗流,称为 TLB 击落。

关于Linux 页表管理和 MMU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26016361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com