假设我们有一个32位系统,或者64位系统,甚至128位系统。每个页表项的大小是多少?

问题描述 投票:0回答:1

那么页表条目包含内存中的物理页地址,一些位,例如脏/有效/使用位,也许一些未使用的位是正确的?

给定一个可以是32位、64位、甚至128位的系统(当然是理论上的),如何确定每个页表项的大小

作为后续问题,如果分页方案使用红黑基数树结构,需要多少级页表?

memory memory-management operating-system paging page-tables
1个回答
0
投票

您可以在特定系统的手册中查找该信息。

系统的位数和您提到的大小之间没有直接关系。硬件设计人员有很大的决定余地。

页表条目必须足够长才能存储所有必要的信息。它取决于 MMU 支持的功能以及物理地址的宽度(可能与 CPU 规定的“位数”不同,与寄存器和虚拟地址的大小不同!)。例如:

  • Intel 80286 是 16 位 CPU。它的“页表”(称为描述符表 - 但具有类似的功能)具有... 64 位的条目!为什么?因为它的物理地址是 24 位,并且它还允许任意大小的页面,小至一个字节!因此它必须存储完整的 24 位地址 16 位大小的字段!
  • 大多数系统要求页面具有特定的大小,并且还按照该大小对齐 - 这允许重用地址的某些位,否则将为 0。
  • 带有 PAE 扩展的 32 位 x86 最多可以有 51 位物理地址 - 尽管是 32 位系统。它的页条目长 64 位。

关卡数量有更多的余地。我们从虚拟地址位大小(它可以小于规定的位数 - 64 位 CPU 目前少于 64 个虚拟地址位!)开始,减去页面偏移位大小(这取决于最小页面大小),然后我们得到页面索引大小 - 但如何在层之间分割它完全取决于架构设计师!

  • 最终,它取决于页表大小。在 x86 中,页表的大小必须为最小页 (4kiB) 的大小,但没有法律规定在其他系统上也必须如此。系统设计人员可以选择更小或更大的尺寸。
  • 不均匀的分割也是可能的。具有 PAE 的 32 位 x86 使用 (2, 9, 9) 索引位分割 - 其中首页仅包含 4 个条目,大小为 32 字节!
© www.soinside.com 2019 - 2024. All rights reserved.