计算页面映射表的总大小

时间:2011-12-05 00:51:11

标签: memory

我获得了页表条目的格式:

  • 位23:有效位
  • 第22位:修改位
  • Bits 22-18:LRU Bits
  • 比特17-0:帧数

我告诉系统使用32位虚拟地址和大小为8192字节的页面。

  • 页面映射表的总大小(以字节为单位)是什么?
  • 如果使用反向页面映射表,如果每个PTE中的LRU字段减少到3位,那么它的总大小将以字节为单位吗?

我已经帮助解决了这个问题,并计算出系统的最大物理内存为2GB。在计算页面映射表的总大小时,我不确定是否需要考虑32位虚拟地址数据。

1 个答案:

答案 0 :(得分:1)

看起来没有足够的信息来回答这个问题。

请参阅,页表大小等于其中的条目数乘以每个条目的大小。

首先,我不知道页表条目是24位长还是32位长或更大。这没有明确说明。

其次,如果在将虚拟地址转换为物理地址时只涉及一个页表,则页表必须覆盖虚拟地址的整个32位。由于单个PTE仅处理13(因为页面大小为2 ^ 13 = 8192字节),在这种情况下您需要2 ^(32-13)= 2 ^ 19个条目。

现在,如果翻译中涉及页面表的层次结构,换句话说,第一页表(通常称为页目录)的条目指向第二级页表,那些指向代码/数据页面或第三级页面表等等,你明白了......在这种情况下,答案将会有所不同。但是没有指定是只有一个页表还是多个页表链。

在我看来,不太可能有2 ^ 19个条目的页表。页表通常是单个页面的大小(有时更小)。因此,例如,如果PTE是32位,则PT中有8192/4 = 2048个PTE,并且在虚拟地址的剩余32-13 = 19位中仅覆盖11(2 ^ 11 = 2048) 。虚拟地址的其他19-11 = 8位必须由另一个页表,页目录处理,只有2 ^ 8 = 256个条目,前提是页表和页目录中的条目相同。

鉴于提供的信息,这里没有明确的答案,只有猜测。