首页 > 解决方案 > 分页命名法

问题描述

在研究虚拟内存时,我有时会看到名词page tablepage table entrypage的使用冲突。例如“页表是页表......”和“页表包含页表条目”。

我对关系的理解(在 x86-64 的上下文中)如下:

这个高层次的总结,以及上述名词的使用,准确吗?

标签: x86operating-systemvirtual-memorysystems-programmingpage-tables

解决方案


这个高层次的总结,以及上述名词的使用,准确吗?

不完全是(没有一个条目包含虚拟地址)。对于 80x86(2 级)上的“普通 32 位分页”:

  • 页面目录是页面目录条目的数组

    • 页目录条目包含页表的物理地址,其中一些位(本来为零)重新用于各种标志(例如权限位)
  • 页表是页表条目的数组

    • 页表条目包含页面的物理地址,其中一些位(本来为零)重新用于各种标志(例如权限位)

对于 80x86(4 级)上的“长模式分页”:

  • PML4(Page Map Level 4)是 PML4 条目的数组

    • PML4 条目包含页面的物理地址,其中一些位(本来为零)重新用于各种标志(例如权限位)
  • PDPT(页面目录指针表)是 PDPT 条目的数组

    • PDPT 条目包含页面目录的物理地址,其中一些位(本来为零)重新用于各种标志(例如权限位)
  • 页面目录是页面目录条目的数组

    • 页目录条目包含页表的物理地址,其中一些位(本来为零)重新用于各种标志(例如权限位)
  • 页表是页表条目的数组

    • 页表条目包含页面的物理地址,其中一些位(本来为零)重新用于各种标志(例如权限位)

当然这里有一个模式:

  • A<NAME>是一个<NAME>条目数组

    • <NAME>条目包含 a 的物理地址,<NEXT_LOWER_LEVEL_NAME>其中一些位(本来为零)重新用于各种标志(例如权限位)

.. 其中“ <NAME>”是(从最高到最低)以下之一:PML5, PML4, Page Directory Pointer Table, Page Directory, Page Table.


推荐阅读