加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux页表管理和MMU

发布时间:2020-12-14 02:18:25 所属栏目:Linux 来源:网络整理
导读:我对 linux内核和MMU之间的关系有疑问. 我现在明确指出 Linux内核管理虚拟内存地址和物理内存地址之间的页表. 同时在x86架构中有MMU,它管理虚拟内存地址和物理内存地址之间的页表. 如果MMU出现在CPU附近,内核是否还需要处理页表? 这个问题可能是愚蠢的,但另
我对 linux内核和MMU之间的关系有疑问.
我现在明确指出 Linux内核管理虚拟内存地址和物理内存地址之间的页表.
同时在x86架构中有MMU,它管理虚拟内存地址和物理内存地址之间的页表.
如果MMU出现在CPU附近,内核是否还需要处理页表?

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

非常感谢提前!

解决方法

OS和MMU页面管理职责是同一机制的两个方面,它们位于架构和微架构之间的边界上.

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

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

还应注意,硬件必须防止可能损害先前翻译的这种TLB“高速缓存”的一致性的许多极端情况,例如在使用期间的页面混叠或重映射.在一些机器上,更糟糕的情况甚至需要大量的冲洗流程称为TLB击落.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读