【问题标题】:Calculate total size of a page map table计算页映射表的总大小
【发布时间】:2011-12-05 00:51:10
【问题描述】:

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

  • 位 23:有效位
  • 位 22:修改位
  • 位 22-18:LRU 位
  • 位 17-0:帧号

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

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

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

【问题讨论】:

  • 我认为计算页表大小的公式是(虚拟地址空间/页大小)*页表条目大小。鉴于此,我会说 ((2^32)/8192)*page table entry size 会给我页映射表的大小。任何人都可以发表评论吗?我不确定页表条目大小是多少。

标签: memory


【解决方案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 个条目,前提是页表和页目录中的条目相同。

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

【讨论】:

  • 嘿,谢谢!我和另一个人一起工作,我认为页表条目是 24 位的,因为给出了页表条目的格式。帧/页码覆盖 18 位,lru 覆盖 5 位,修改位为 1 位,有效位为 1,等于 24。这有帮助吗?你似乎很擅长这个主题。这些信息有帮助吗?
  • 正如我所说,页表通常是一页大小,包含两个条目的幂。在 8192 字节长的页表中拥有 3 字节条目(不是两倍大小的幂,甚至不是偶数大小)对我来说看起来很奇怪——它将有 2730 个条目和 2 个未使用的字节。没有理智的工程师/架构师会设计这样的页表。使用起来很不方便。
  • 3 字节条目是什么意思?你说的是LRU位吗?我同意你的看法,这只是一个硬件问题,所以我猜教授只是编造了一些东西。如果你能指导我完成这个,我肯定会很感激,根据给定的数据。
  • 24 位 = 3 字节(假设一个字节是 8 位)。
  • 啊,我明白了。所以基于页表条目是 24 位的事实,你能帮我解决它吗?我以为他会给我们所需要的一切。我什至不确定 32 位虚拟地址片段在这里有什么帮助。我想你帮我解决了这个问题的最大 2GB 物理内存。
猜你喜欢
  • 2013-04-25
  • 2014-07-28
  • 2023-03-22
  • 2012-05-28
  • 2014-05-17
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 2011-12-16
相关资源
最近更新 更多