以下页表适用于具有16位虚拟和物理地址以及4,096字节页面的系统。引用页面时,引用位设置为1。一个线程周期性地将参考位的所有值清零。所有数字都以十进制形式提供。
我想将以下虚拟地址(十六进制)转换为等效的物理地址。另外,我想在页表中为相应的条目设置引用位。
•0xE12C
•0x3A9D
•0xA9D9
•0x7001
•0xACA1
我知道答案,但我想知道如何才能实现这些答案:
0xE12C → 0x312C
0x3A9D → 0xAA9D
0xA9D9 → 0x59D9
0x7001 → 0xF001
0xACA1 → 0x5CA1
我找到并尝试了This,但这对我没什么帮助。
答案 0 :(得分:14)
假设虚拟地址长度为16位。
因此,虚拟地址空间中有2 ^ 16个地址。
页面大小为4 KB(页面中有4K(4 *(2 ^ 10))个地址),因此页数将为(2 ^ 16)/(2 ^ 12)= 2 ^ 4。
要处理每页,需要4位
虚拟地址中最重要的4位将表示被引用的页码,其余12位将是页面偏移。
要记住的一件事是页面大小(在虚拟地址空间中)始终与主内存中的帧大小相同。因此,最后12位在物理地址中将与虚拟地址保持相同。
要获取主存储器中的帧地址,只需使用前4位
示例:考虑虚拟地址0xACA1
这里A A CA1表示页码(10),相应的帧号为5(0101),因此得到的物理地址为→0x5CA1。
答案 1 :(得分:13)
要将虚拟地址转换为实体地址,我们需要知道 3 的内容:
[1]
在此示例中: 16位系统, 4KB页面大小和物理内存大小 64KB 。
首先,我们需要确定在页面内作为偏移量所需的位数。 <{>>偏移的log2(Page-Size)
= log2(4096)
= 12 位
在虚拟地址的16位中,12位用于偏移,这意味着每个进程都有2^4 = 16
个虚拟页面。页表中的每个条目存储容纳页面的相应框架。例如:
现在让我们翻译!
首先,为了便于工作,我们可以将0xE12C
转换为binary
。
0xE12C = (1110 0001 0010 1100) in base 2
1110 = 14 in decimal
Entry 14 in P.T => Page frame 3.
让它连接到12个偏移位
Answer: (0011 0001 0010 1100) = 0x312C
另一个例子:0x3A9D
0x3A9D = 0011 1010 1001 1101
0011 = 3
PageTable[3] = 10
10 in decimal = 1010 in binary
1010 1010 1001 1101 in binary = 0xAA9D
[1]
如果页表条目包含更多信息,我们需要知道引用每个帧所需的位数。在我们的例子中,它是log2(64KB/4KB) = log2(16) = 4
位。也就是说,如果页表项包含6位,我们知道它们只有4
用于帧号,其余用于标志。
例如:
| page | page frame |
|-------------------|
| 5 | 100101 |
Page 5 is mapped to frame number 1001 = frame number 9.
答案 2 :(得分:1)
为了帮助您解决这个问题,我们需要了解我们的详细信息:
因此,我们现在有:
我们到达那里......耐心等待! :)
以十六进制表示法存储器地址0xE12C也称为保持16位地址。 (因为它在问题中说明了。)
现在让我们的地址屠杀......
我们先删除&#39; 0x&#39;来自信息。
我们可以将E12C转换成@Tony Tannous这样的二进制符号,但我会稍微应用一下。
我只是使用比率。好吧,地址用4个字符表示,由于16/4 = 4,我可以将第一个字母定义为虚拟地址,而另外3个是偏移地址。
有了这些信息,&#39; E&#39;在十六进制格式中,我需要转换为Decimal = 14.然后我看看你提供的表格,我找到了页面框架&#39; 3&#39;。页面框架3以十进制格式标记,然后需要转换回十六进制格式... Duh!...这是3!
因此,虚拟内存位置0xE12C的物理地址映射可以在物理内存的0x312C处找到。
然后,您将返回到该表,并参考参考位列并输入&#39; 1&#39;到第14行。
对这些应用相同的概念 -
0x3A9D → 0xAA9D
0xA9D9 → 0x59D9
0x7001 → 0xF001
0xACA1 → 0x5CA1
如果您注意到,最后3位数字相同(确定偏移量)。 并且根据表格映射4位数中的第1位:
table entry 3 -> page frame 10 -> hex notation A
table entry A (10) -> page frame 5 -> hex notation 5
table entry 7 -> page frame 15 -> hex notation F
table entry A (10) -> page frame 5 -> hex notation 5
希望这个解释可以帮助你和其他像我一样的人! :)