页表命名法

Pagetable nomenclature

在研究虚拟内存时,我有时会看到名词 page tablepage table entry[=29 的冲突​​使用=],以及 。例如 "A page table is a table of pages..." 和 "A page table holds page table entries".

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

  • 虚拟内存分为块(即页)
  • 一个页面 table 是一个条目数组
    • 每页一个条目
    • 每个条目都是一个由元数据组成的地址
      • 权限位
      • 在直接映射中,物理地址到帧
      • 或者,另一个页面的物理地址tables

这个高级摘要和上述名词的使用是否准确?

Is this high-level summary, and use of the aforementioned nouns, accurate?

不完全(none 的条目曾经包含虚拟地址)。对于 80x86(2 级)上的 "plain 32-bit paging":

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

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

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

对于 80x86(4 级)上的 "long mode paging":

  • PML4(页面映射级别 4)是 PML4 条目的数组

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

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

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

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

这里当然有规律:

  • 一个 <NAME><NAME> 个条目的数组

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

.. 其中“<NAME>”是(从最高到最低)以下之一:PML5PML4Page Directory Pointer TablePage DirectoryPage Table.