【问题标题】:How to find the largest page size that could be used for a specific virtual to physical address mapping?如何找到可用于特定虚拟到物理地址映射的最大页面大小?
【发布时间】:2014-12-07 18:43:43
【问题描述】:

你如何回答以下问题:

“如果我们有一个系统,其中虚拟地址 0x52D2C3A3 映射到物理地址 0x13A103A3,那么可以用于此映射的最大页面大小是多少?”。

不要跳过细节,我正在努力理解。我也不仅需要答案,我已经有了答案。我只是想知道你如何解决这样的问题。

【问题讨论】:

  • 作业题中从上下文中删去的一句话没有任何意义,也没有包含如何找到正确答案的提示。它与stackoverflow.com/a/26800888/2626313 非常吻合
  • 告诉我... 句子周围没有上下文。这是问题,没有别的。没有提示,什么都没有。答案是:“最大页面大小为 16K,因为 14 个低位是相同的,并且 2^14 = 16,384 = 16K。低位构成页面偏移,在虚拟地址之间始终相同及其到物理地址的映射。”但我不明白你是怎么想到的。
  • 假设这不是抽象 CPU 上的假设寻址,并假设操作系统是 Linux,那么在阅读 cs.utexas.edu/users/witchel/372/lectures/15.VirtualMemory.pdf 之后,如果您认为虚拟地址是 (page number, offset) 和物理地址是(frame number, offset),地址转换所做的就是将page number映射到frame number

标签: linux operating-system


【解决方案1】:

低位构成页面偏移,在虚拟地址和映射到物理地址之间始终相同。因此,我们需要找到给定十六进制值的低位。

0x52D2C3A3 = 0000 0000 0101 0010 1101 0010 1100 0011 1010 0011

0x13A103A3 = 0000 0000 0001 0011 1010 0001 0000 0011 1010 0011

由于前 14 位相同,因此最大页面大小为 2exp14 = 16 384 = 16k。

【讨论】:

    猜你喜欢
    • 2013-03-10
    • 2012-02-18
    • 2016-09-26
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    相关资源
    最近更新 更多