gpt4 book ai didi

assembly - 页表和页目录之间的区别

转载 作者:行者123 更新时间:2023-12-02 12:14:08 24 4
gpt4 key购买 nike

我经常在微处理器和微 Controller 范式中听到“地址空间”这个术语。据我所知,地址用于引用物理内存(主)中的特定内存块。

如果我是对的,地址空间是所有此类地址的超集。对吗?

通过使用虚拟内存/分页,我们可以使用辅助存储来扩展地址空间。

在这个范例中,页表、页表项和页目录到底是什么?据我所知,第一个 p.memory 是逻辑分段的,这些段被分为页面。那么页表到底是什么?包含页面的表格?什么是页目录,页表的 super 表?

最佳答案

在x86架构中,页目录和页表共同提供虚拟地址(应用程序使用的内存地址)和物理地址(物理内存硬件中的实际位置)之间的映射。

页面只是一 block 连续的内存。 x86(32位)支持3种大小的页面:4MB、2MB和4KB,后者是主流操作系统中最常用的。 页表是一个 1024 * 32 位条目的数组(可以方便地装入单个 4KB 页面)。每个条目都指向一个页面的物理地址。由于单个页表无法单独表示整个地址空间(1024 个条目 * 4KB = 仅 22 位地址空间),因此我们需要第二级页表:页目录 。页目录还包含 1024 * 32 位条目(再次适合单个页),每个条目都指向一个页表。我们可以看到,现在 1024 * 1024 * 4KB = 32 位,通过这个 3 级结构,我们能够映射整个 4GB 虚拟地址空间。

当CPU被要求访问虚拟地址时,它使用最高10位(31:22)来索引页目录表(其基地址存储在特殊寄存器中)。接下来的 10 个最高位 (21:12) 用于索引页目录项所指向的页表。最低 12 位(11:0)最终用于索引页表项所指向的页中的一个字节。

在其他系统中,可能需要更多或更少级别的页表,具体取决于虚拟地址空间的大小和支持的页面大小。例如,具有 4MB 页面的 x86 仅需要一个页面目录。在具有 4KB 页面的 64 位模式下,使用 4 级系统:页面映射级别 4 表包含指向多个页面目录之一的条目。

Intel Architectures Developer's Manual有关该主题的更多信息,特别是第 3 章和第 4 章。

关于assembly - 页表和页目录之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29945171/

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