我认为对大多数人来说,我确实很容易陷入困境。页面大小(偏移量)为4KiByte,假设有多少位用于偏移量?我知道这听起来很容易,但这就是我所困的地方:
1 Byte = 8 Bit = 2^8 = 256 possibilities.
4 KiByte = 2^12 Byte = 4096 Byte = 4096*2^3 Bit = 32768 = 2^15 possibilites
。
意思是我需要15位地址才能在虚拟内存页面中的所有32768条可寻址行中寻址正确的行。
虚拟内存的大小为64kiByte,主内存为32kiByte,因此页表中有16个虚拟页,分别具有8个物理页。
所以给定一个虚拟地址,如0x13AF,我将切掉15位用于偏移量,而页表中的索引只剩下一个位,这当然毫无意义,因为我们需要能够地址16页面表中的不同条目。解决方案应该是仅将最后12位作为页面中的偏移量,并将前4位作为页面表的索引,但是我很困惑,我只是无法正确地计算它。
我想我的意思是我在从位到字节的转换中有一个很大的误解,但我无法弄清楚。
谢谢!