我正在阅读“现代操作系统”一书。我对“页面大小”感到困惑。
在书中,作者说,
传入的16位虚拟地址是 分成4位页码和 12位偏移。有4位用于 页码,我们可以有16页,和 如果偏移量为12位,我们可以 解决a中的所有4096 字节 页。
为什么4096字节?使用12位,我们可以在页面中处理4096个条目,这是正确的。但是,一个条目是一个地址(在这种情况下,地址大小= 16位)。所以我认为我们可以解决4096(条目)* 16(位)= 4096(条目)* 2(字节)= 8KB,但为什么书中说我们可以解决4096(字节)?
提前致谢! :)
答案 0 :(得分:9)
假设字节寻址存储器(几乎每台机器在过去30年中都使用),因此每个地址都指一个字节,而不是条目或地址或任何其他更大的值。要保持16位值,您需要两个连续的地址(两个字节)。
30多年前,曾经有过这样的机器,这些机器就像你猜测的那样有效。但是这样的机器在处理面向字节的数据(例如ASCII字符)时遇到了困难,因此已经失宠了。如今,字节可寻址性,8位字节和二进制补码整数之类的东西几乎就是假设。
答案 1 :(得分:3)
12位是页面内的偏移量。偏移量以字节为单位,而不是地址。 2 ^ 12是4096。
答案 2 :(得分:0)
您计算的是页面大小,即内存中页面表中页面的大小。当我们使用12位作为偏移时,物理存储器中的每个帧是2 ^ 12 = 4096K。但是,页表中的每个页面在内存中占用2 ^ 12个条目x 2个字节= 8K。
答案 3 :(得分:0)
好的,所以你有16位的虚拟地址让我们看看它是什么意思。这意味着你有2 ** 16 = 65536字节。
4位页码,表示有16页,因为2 ^ 4 = 16 现在您将页面命名为page1,page2 ... page16。
现在我们剩下12位让我们看看12位代表有多少地址2 ** 12 = 4096字节
65536字节也可以通过将其分为16页,每页包含4096个字节,为4096 * 16 = 65536
答案 4 :(得分:0)
因为有12位,所以我们可以寻址2^12=4096
插槽。每个插槽代表一个在字节可寻址存储器中大小为1字节的地址。因此,总大小为4096*1=4096 bytes = 4KB.