Linux页表管理和MMU
我对
linux内核和MMU之间的关系有疑问.
我现在明确指出 Linux内核管理虚拟内存地址和物理内存地址之间的页表. 同时在x86架构中有MMU,它管理虚拟内存地址和物理内存地址之间的页表. 如果MMU出现在CPU附近,内核是否还需要处理页表? 这个问题可能是愚蠢的,但另一个问题是,如果MMU负责内存空间,谁管理高内存和低内存?我相信内核将从MMU接收虚拟内存大小(4位,32位),然后内核将区分虚拟地址中的用户空间和内核空间. 非常感谢提前! 解决方法
OS和MMU页面管理职责是同一机制的两个方面,它们位于架构和微架构之间的边界上.
第一方定义了硬件和在其上运行的软件(在本例中为操作系统)之间的“契约” – 如果要使用虚拟内存,则需要构建和维护该合同中描述的页表. 理论上,MMU可以决定为每个翻译(页面遍历)发出一组存储器访问,以便实现所需的行为.但是,由于它是一个性能关键元素,大多数MMU通过缓存TLB中先前页面遍历的结果来优化这一点,就像缓存存储先前访问的结果一样(实际上,在某些实现中,缓存本身也可能存储一些对页表的访问,因为它通常驻留在可缓存的内存中). MMU可以管理多个TLB(大多数实现将数据和代码页分开,有些具有二级TLB),并从那里提供转换,除非访问速度更快,否则不会注意到. 还应注意,硬件必须防止可能损害先前翻译的这种TLB“高速缓存”的一致性的许多极端情况,例如在使用期间的页面混叠或重映射.在一些机器上,更糟糕的情况甚至需要大量的冲洗流程称为TLB击落. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |