为什么带有12位偏移的16位地址会导致4KB页面大小?
-
02-10-2019 - |
题
我正在阅读“现代操作系统”书。我对“页面大小”感到困惑。
在书中,作者说,
传入的16位虚拟地址分为4位页码和12位偏移量。页码为4位,我们可以有16页,并且有12位偏移量,我们可以解决所有4096 字节 在页面内。
为什么4096字节?有12位,我们可以讲4096 条目 在页面中,正确。但是,一个条目是一个地址(在这种情况下,地址尺寸= 16位)。因此,我认为我们可以解决4096(条目) * 16(bit)= 4096(entry) * 2(字节)= 8KB,但是为什么这本书说我们可以地址4096(字节)?
提前致谢! :)
解决方案
这是假设字节加入的内存(过去30年中几乎每台使用的机器都使用),因此每个地址都涉及一个字节,而不是条目或地址或任何其他较大的值。要保持16位值,您将需要两个连续的地址(两个字节)。
30多年前,曾经有一个单词解决的机器,就像您的推测一样。但是,这样的机器很难处理面向字节的数据(例如ASCII字符),因此失业了。如今,刚刚假设了字节可寻址性,8位字节和两个组合整数。
其他提示
12位是页面中的偏移量。偏移是在字节中,而不是地址。 2^12是4096。
您正在计算的是页面大小,即内存中页面表中的页面大小。当我们使用12位用于偏移量时,物理内存中的每个帧均为2^12 = 4096k。但是,页面表中的每个页面均占据2^12条目x 2字节= 8k内存中的8k。
好的,所以您有16位虚拟地址,让您看看这意味着什么。这意味着您有2 ** 16 = 65536字节。
4位页码,这意味着有16页为2^4 = 16现在您将页面命名为Page1,Page2 ... Page16。
现在我们有12 bits,让我们看看有多少个地址可以12位代表2 ** 12 = 4096字节
65536字节也可以通过将其分为16页,其中包含4096字节为4096*16 = 65536