我已经看了几篇与此相关的不同文章,但没有一篇以我能理解和复制的方式解释这个解决方案。我需要知道如何根据以下内容将物理地址转换为内存中的虚拟地址:
一个简单的虚拟内存系统具有32KB物理内存和16位虚拟地址,其中12位用作偏移量。以下是其中一个进程的页表的当前内容:
所以基本上我认为这个虚拟内存系统的页面大小是1024KB。我需要一个过程来找到VA B2A0的相应PA。如果你能告诉我我可以从那里开始的过程,你就不必给我最终的解决方案:)
先谢谢你们。此外,如果你知道一篇文章已经做到这一点而且我错过了它,请随时链接我。
干杯。
答案 0 :(得分:0)
32 KB是2 ^ 15。 因此每个物理地址有15位,其中12位用作偏移,高3位作为页框数。
0xb2a0所在的虚拟页面是什么?为了确定这一点,我们需要取地址的比特,高于2 ^ 12。页面大小为2 ^ 12,即4096或0x1000,因此它是虚拟页面编号0xb = 11(0xb2a0 / 0x1000的底限)。页面内的偏移量为0xb2a0模数为0x1000,为0x2a0。
然后使用该表将虚拟页码11转换为物理页面框架。虚拟页面存在(1),并且它对应于具有较高位111的物理帧号,即二进制的111 + 12 0,=> 0x7000 - 它是物理帧起始的地址。
我们的物理地址位于偏移量0x2a0处,因此,寻找的物理地址为0x7000 + 0x2a0 = 0x72a0。
请按照此流程向您说明。如果您有任何疑问,请先阅读维基百科,如果仍然不清楚,请询问:)
答案 1 :(得分:-1)
我正在尝试进行考试复习和学习,但我无法找到同样问题的可靠答案。我巩固了我所学到的知识,我希望无论我在这里总结什么,都能帮助像我这样的人。 :)
我发现上面的答案中的解释对我的小脑子来说有点难以理解。
我认为以下链接比维基百科的解释提供了更好的概述: http://williams.comp.ncat.edu/addrtrans.htm
此YouTube视频还提供了解释虚拟地址转换过程的出色指南: https://www.youtube.com/watch?v=6neHHkI0Z0o
回到问题 - >>>
第一个问题是 - '页面大小'这个虚拟内存系统? 基于此处的定义 - https://en.wikipedia.org/wiki/Page_(computer_memory)
我最初在'页面之间感到困惑。和'页面大小'但我现在想出来了。 Pages确定可用的页数(如书中),页面大小如下(书中的A4,A5,A6页面。)。
因此,由于虚拟内存和物理内存偏移相同并相应地进行映射,因此我们可以通过偏移大小确定页面大小。如果偏移大小为12位,那么2 ^ 12 = 4,096 Byte a.k.a 4-KB。
好奇心灵的问题,有多少虚拟内存页面? - 16位虚拟地址空间减去12位偏移= 4位 - 等于2 ^ 4 = 16页可用(因此我们看到的表格!)
其他好奇心灵的另一个问题是,有多少个物理内存页面? - 32KB物理内存= 32 x 1024bytes = 32,768字节 - Log(32768)/ Log(2)= 15位,对于总物理MEMORY也意味着2 ^ 15 - 减去我们已经知道的12位偏移量... - 15位(总物理内存)减去12位(偏移)= 3位用于物理地址空间
转到下一个问题,虚拟地址0xb2a0的相应物理地址是什么(当前以十六进制表示法设置)?
上面的@Dmytro Sirenko答案解释得很清楚,我会在这里帮忙改写一下。我们需要记住,我们的虚拟地址是 - 16位,现在包含的地址空间是value = b2a0(忽略0x)。
我的捷径(如果我错了请纠正我),是因为地址:偏差(页面大小)的比例是4:12 = 1:3 ......
b | 2 a 0
^
page number | offset
将十六进制值b转换为十进制= 11.
我查看表格,并在表格编号11中找到了Page Frame = 111。
111以二进制表示,它与物理内存帧相关。
请记住,我们正在查看15位的物理内存地址空间,因此,我们可以确定:
1 1 1 | 0 0 0 0 0 0 0 0 0 0 0 0
Address | offset
由于Offset直接从虚拟内存映射到物理内存,我们将(2a0)的值直接放入物理内存。不幸的是,我们无法立即在此处表示它,因为它是十六进制格式,而我的上述地址空间是以二进制格式设置的。
考虑到我将在考试中接受考试而且我不会被允许带入计算器...我会反过来以十六进制回答。 :)
当我们将111转换为十进制时(我按001 = 1,010 = 2,100 = 4,101 = 5,110 = 6,111 = 7)。 现在我需要从十进制转换为十六进制! = 7(dec)= 7
因此,此虚拟内存地址的相应物理内存位置是....(响亮的鼓和窗帘打开....)
7 2 a 0
以这种方式标注为0x72a0。