【问题标题】:How is the size of a single page table entry affected when the page size changes?当页面大小发生变化时,单个页表条目的大小会受到怎样的影响?
【发布时间】:2018-05-11 12:56:57
【问题描述】:

我正在研究操作系统,我有一个关于页表的问题。

我遇到了这个问题,它询问当页面大小发生变化时页表大小和条目大小如何变化。假设页面大小从 8KB 减少到 4KB。现在,我的猜测是页表的大小会加倍,因为现在分页系统需要两倍的条目才能将页面映射到框架。

但是对于页表条目的大小,我不太确定。我的猜测是页表条目会更小,因为它包含的物理地址更短。这是因为物理地址是由页面/帧大小决定的,如果页面大小更小,物理地址的长度也会缩短 2^-1。

但这是一个好的假设吗?页表项的大小是由地址的长度决定的吗?或者,无论每个框架/页面的大小如何,条目大小是否固定?我似乎无法找到专门针对这些条目的资源/问题。

谢谢!

【问题讨论】:

  • 地址通常表示为指针,而指针通常是固定大小的。

标签: memory-management operating-system paging


【解决方案1】:

我将尝试回答您的示例,即将页面大小从 8KB 减少到 4KB。在那种情况下,正如您所说,PTE(页表条目)的总数确实增加了一倍,因为虚拟地址空间中的页数增加了一倍。

对于PTE大小:PTE包含几个字段,其中最重要的显然是帧号,它指向对应页所在的物理地址。更小的页面也意味着更小的帧和更长的帧号,因为表示一个帧号所需的位数为$log2(物理地址空间大小/帧大小)$。

这是否意味着我们将拥有更大的 PTE?不必要。 与许多其他建筑结构一样,PTE 的大小四舍五入到最接近的 2 次方。例如,在 x86-64 CPU 上,PTE 大小为 64 位,但实际上只有 48--52 个在使用。因此,在帧号字段中添加几位(在您的示例中只有一位)可能会使 PTE 大小保持不变。

编辑:您可以在此处查看 x86-64 架构中的 PTE 结构: https://qph.ec.quoracdn.net/main-qimg-0bcd46d62af1b35820a88f7afc4a50de (取自https://www.quora.com/How-is-a-page-walk-implemented

【讨论】:

  • 谢谢!我也很欣赏这张图:)
猜你喜欢
  • 1970-01-01
  • 2019-03-09
  • 2021-11-10
  • 2021-09-02
  • 2017-01-30
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多