如何计算物理地址对应的虚拟逻辑地址?

时间:2021-01-12 22:26:38

标签: operating-system

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

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

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

<头>
页数 有效/无效位 帧数
0 1 4
1 1 7
2 0 -
3 1 2
4 0 -
5 1 0

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

1 个答案:

答案 0 :(得分:0)

我认为您可以从问题中猜出大多数配置。我会以 a) 为例。或许你能告诉我我答对了,剩下的你自己解决?

首先要确定虚拟地址中代表页表中偏移量的部分,以及代表物理帧中偏移量的部分。对于地址 1085 和 1024 字节的页大小,需要 10 位作为物理帧中的偏移量,其余为页表中的偏移量。

1085 decimal = 0x43D = 0b100 0011 1101

十个最低有效位(右侧)是物理帧中的偏移量。那就是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