【问题标题】:How to calculate which virtual logical address corresponds to physical address?如何计算物理地址对应哪个虚拟逻辑地址?
【发布时间】:2021-04-17 22:28:34
【问题描述】:

假设当前在处理器上运行的进程的页表如下图所示。所有数字都是十进制,所有数字都以 0 开头,所有地址都是内存音节地址。页面大小为 1024 字节。

以下每个逻辑(虚拟)地址对应于哪个物理地址(如果有)?指示在翻译标题时是否发生页面错误。

以下每个逻辑(虚拟)地址对应于哪个物理地址(如果有)?指示在翻译标题时是否发生页面错误。 一)1085 b) 2321 c) 5409

number of pages valid/invalid bit number of frames
0 1 4
1 1 7
2 0 -
3 1 2
4 0 -
5 1 0

我不想要这个问题的解决方案,我希望有人解释这种问题是如何解决的。

【问题讨论】:

    标签: operating-system


    【解决方案1】:

    我认为您可以从问题中猜出大多数配置。我将以 a) 为例。也许你可以告诉我,如果我得到正确的答案,然后你可以自己解决其余的?

    第一步是确定虚拟地址在页表中代表偏移的部分是什么,在物理帧中代表偏移的部分是什么。对于地址 1085 和 1024 字节的页面大小,物理帧中的偏移量需要 10 位,页表中的偏移量需要其余的位。

    1085 decimal = 0x43D = 0b100 0011 1101

    10 个最低有效位(右侧)是物理帧中的偏移量。那是0b00 0011 1101 = 0x3D = 61 decimal。所以现在你知道物理帧中的偏移量是 61 字节。

    要计算此偏移量将在哪个页面中,请取剩余位(向左)。那是0b1 = 0x1 = 1 decimal。这引用了页表条目 1。页表条目 1 设置了有效位。这意味着该页面存在于内存中,不会导致页面错误。页表条目指向第 7 帧。第 7 帧之前有 7 个帧:帧 0、1、2、3、4、5 和 6。因此,此虚拟地址应转换为 7 * 1024 + 61 = 7229

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2013-05-05
      • 2014-05-23
      • 2021-01-17
      相关资源
      最近更新 更多