将虚拟地址转换为物理地址

时间:2016-10-27 17:43:38

标签: caching memory virtual-machine cpu-architecture cpu-cache

想知道我应该如何处理转换虚拟地址的信息

    (0x10002400)        

包含价值下限(n / 2 ^ 10) 到物理地址

给出的详细信息是32位地址总线 512 KB物理内存和 页面大小为32 KB

1 个答案:

答案 0 :(得分:1)

内存位置的内容不会影响虚拟到物理地址的转换。

您的虚拟地址有8个十六进制值,表示这是一个32位的虚拟地址。 您的物理内存大小为512KB,这意味着有2 ^ 19个字节(512 * 1024字节)。 在这种情况下,虚拟到物理映射涉及将32位地址映射到19位地址。 在您的示例中,页面大小为32KB,这意味着有16个物理页面(512/32)。我们需要4位来索引16个物理页面。 从32位虚拟地址,我们使用最后4位索引到物理页面。我们可以使用余数28位来进行比较。 有一种称为“页表”的结构,它保存了这些信息。 这基本上是虚拟地址的前28位(32-4)到前15位(19-4)物理地址的映射。

在给定的示例中,虚拟地址为0x10002400。 最后4位由十六进制0表示。因此索引为0.所以我们从页表中取第0个条目。然后我们检查页表中的虚拟标签是否与我们的虚拟标签匹配,即1000240(注意:最后一个十六进制值被删除)。如果条目中的虚拟标记与1000240匹配,那么我们使用第0个条目中的物理标记,并通过附加相同的索引来构造我们的物理地址,该索引为零。