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

converting virtual address to physical address

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

    (0x10002400)        

其中包含值 floor(n/2^10) 到物理地址

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

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

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

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