The following page table is for a system with 16-bit virtual and physical addresses and with 4,096-byte pages. The reference bit is set to 1 when the page has been referenced. Periodically, a thread zeroes out all values of the reference bit.All numbers are provided in decimal.
我想将以下虚拟地址(十六进制)转换为等效的物理地址。另外,我想为页表中的适当条目设置引用位。
• 0xE12C
• 0x3A9D
• 0xA9D9
• 0x7001
• 0xACA1
我知道答案是,但我想知道如何才能获得这些答案:
0xE12C → 0x312C
0x3A9D → 0xAA9D
0xA9D9 → 0x59D9
0x7001 → 0xF001
0xACA1 → 0x5CA1
我发现并尝试过This https://www.physicsforums.com/threads/translate-virtual-address-to-physical-address.456284/但这对我没有多大帮助。
假设虚拟地址是16位长。
因此,虚拟地址空间中有 2^16 个地址。
页面大小指定为 4 KB(页面中有 4K (4 * (2 ^ 10) ) 地址),因此页面数将为 ( 2^16 ) / ( 2 ^ 12 ) = 2 ^ 4。
为了对每页进行寻址,需要 4 位。
虚拟地址中最高 4 位表示所引用的页号,其余 12 位表示页偏移量。
要记住的一件事是页面大小(在虚拟地址空间中)始终与主内存中的帧大小相同。因此,物理地址的最后 12 位将与虚拟地址保持相同。
要获取主存储器中的帧地址,只需使用前 4 位。
示例:考虑虚拟地址 0xACA1
这里A在ACA1 表示页号 ( 10 ),对应的帧号是 5 ( 0101),因此最终的物理地址将是 → 0x5CA1。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)