我试图做我的考试复习和学习,但我找不到同一个问题的可靠答案。我巩固了我所学到的东西,我希望我在这里总结的任何东西都能对像我这样的人有所帮助。:)
对于我的小脑袋,我发现上面答案中的解释有点难以理解。
我认为下面的链接比维基百科的解释提供了更好的概述:
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 字节,即 4-KB。
好奇的人会问一个问题,有多少虚拟内存页面?- 16 位虚拟地址空间减去 12 位偏移量 = 4 位 - 等于 2^4 = 16 页可用(因此我们看到的表!)
其他好奇的人的另一个问题是,有多少物理内存页?- 32KB 物理内存 = 32 x 1024bytes = 32,768 字节 - Log(32768) / Log(2) = 15 位,这也意味着总物理内存的 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 (十进制) = 7
这样一来,这个虚拟内存地址对应的Physical Memory位置就是……(大鼓大幕拉开……)
7 2 一 0
以这种方式表示为 0x72a0。