gpt4 book ai didi

operating-system - x86 页表如何工作?

转载 作者:行者123 更新时间:2023-12-03 10:59:33 25 4
gpt4 key购买 nike

我熟悉 MIPS 架构,它有一个软件管理的 TLB。因此,您(操作系统)希望如何以及在何处存储页表和页表条目完全取决于您。例如,我做了一个带有单个倒页表的项目;我看到其他人在每个进程中使用 2 级页表。

但是 x86 的故事是什么?据我所知,TLB 是硬件管理的。 x86 是否告诉您,“嘿,这是您当前使用的页表条目需要去[物理地址范围] 的地方”?但是等等,我一直认为 x86 使用多级页表,所以它会告诉你在哪里放置第一级或其他东西......?我糊涂了。

谢谢你的帮助。

最佳答案

进入保护模式后,CR3 寄存器指向一个“页目录”(在进入保护模式之前你可以把它放在任何你想要的地方),它是一个内存页(记住,一个“小”页是 4 KiB,一个“大”页为 4 MiB),有 1024 个指向“页表”的页目录条目 (PDE)。每个条目是指针的前 10 位(页表的地址),加上构成指针底部的一堆标志(存在、许可、脏等)。

(1024 只是来自一个页面是 4096 字节而一个指针是 4 字节的事实。)

每个“页表”本身就是 1024 个“页表条目”(PTE),它同样包含 1024 个指向内存中物理页的条目,以及一堆(几乎相同的)标志。

因此,要转换 32 位虚拟地址,您将指针的前 10 位作为索引到 CR3 的表中(因为有 210 个条目),并且 - 如果该 PDE 进一步分割(意味着它不是t 一个“大”页,你可以从标志中找出)——你取 PDE 的前 20 位,在该地址查找页表,并用虚拟地址的下一个最高 10 位索引到它.然后最高 20 位将您指向物理页,假设最低 12 位告诉您实际存在物理页。

如果您使用物理地址扩展 (PAE),then you get another level in the hierarchy at the very top .

注意:为了您自己(也可能是 CPU)的理智,您可能希望将页目录和页表映射到它们自己,否则事情会很快变得困惑。 :)

TLB 是硬件管理的——因此页表的缓存是透明的——但是有一条指令 InvlPG 会为您使 TLB 中的 PTE 无效。 (我不知道什么时候应该使用它,什么时候不应该使用它。)

来源:http://wiki.osdev.org/Paging

关于operating-system - x86 页表如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10671147/

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