微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MMU 如何知道操作系统使用的页表级别?

如何解决MMU 如何知道操作系统使用的页表级别?

Afaik,在 x86 中,操作系统所做的只是设置 CR3 寄存器,让 MMU 做左边的工作,将线性 addr 转换为物理 addr。但是既然这项工作是由MMU完成的,那么MMU应该知道多级页表是如何划分的规则。然而,我从未见过任何文件谈论这样的细节。我有什么误解吗?

解决方法

页表格式是 ISA 的一部分,由硬件(包括每个 CPU 内核内置的页游走器)实现,因此应遵循哪些软件。

因此,x86 CPU 中的 page-walk 硬件只是为了以 x86 方式切分地址。您可以查看描述页表格式的 ISA 文档,以记录硬件将要查找的内容。

当可以选择页表格式时(例如 PAE 每级 9 位或传统 32 位每级 10 位,或 x86-64 PML5 5 级页表,用于 57 个虚拟位与标准 PML4),选择由控制寄存器设置。

“MMU”在 x86(或其他现代 CPU)中并不是一个独立的东西;它是 CPU 内核的一部分,可能会受到控制寄存器位的影响。如果它是一个完全独立的芯片,您可以将带有 out 指令的顶级页面目录或存储设置为特殊的 MMIO 地址,而不是将 mov 设置为 cr3。>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。