页面表和页面目录之间的区别

时间:2015-04-29 13:25:36

标签: assembly intel microprocessors

我一直在微处理器和微控制器Paradigm中听到术语地址空间。我知道地址用于指代物理内存中的特定内存块(主要)。

如果我是对的,地址空间是所有这些地址的超级集合。正确?

通过使用虚拟内存/分页,我们使用二级存储来扩展地址空间。

在这个范例中,页表,页表项和页面目录究竟是什么?我知道第一个p.memory是分段和逻辑上的,这些段被分成页面。那么页面表究竟是什么?包含Pages的表格?什么是页面目录页表的超级表?

1 个答案:

答案 0 :(得分:31)

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

页面只是一块连续的内存。 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章中。