offset 和 no 有什么区别?页面中的条目数?

What the difference between offset and no. of entries in a page?

假设一台机器有38位的虚拟地址和32位的物理地址。

(b) 对于两级页面 table、16 KB 页面和 4 字节条目,应为顶级页面 table 字段分配多少位以及下一级页面 table 字段有多少?解释一下。

答案如下:

偏移字段需要 14 位来寻址 16 KB。这为页面字段留下了 24 位。由于每个条目是 4 个字节,一页可以容纳 16KB / 4 字节 = 2^12 页 table 个条目和 因此需要 12 位来索引一页 。所以为每个分配 12 位 页字段的地址将寻址所有 2^38 个字节。


我不是很明白,如果我们有14位的偏移量,用于页内寻址,那是什么一页可以容纳16KB / 4 byte = 2^12 ?另一个偏移量?

回答原问题:
不,它不是二级偏移量,它只是用作二级页面内部的索引table。前 12 位作为第一级条目的索引,后 12 位作为二级页面内的索引 table。


  • 38 位虚拟地址
  • 16KB 页面大小
  • 32位物理地址

我们可以得出结论:

  1. 主内存大小为2^32 = 4GB.
  2. log2(16K) = 14,14 位 for offset
  3. 页面条目是 4 个字节
  4. 38-14 = 24 位 参考页
  5. 2^24 个不同的虚拟页面
  6. 2^18种不同的物理帧

现在假设我们要为页面table分配space,如果我们分配一个页面16KB,它将有多少条目? 16K/4 = 4K 条目.

PAGE:
0x000   entry 1
0x001    
0x002    
0x003          
-----------------
0x004   entry 2
0x005
0x006    
0x007
------------------
.       entry 3
.
.
. 
------------------
0xFFC   entry 4096 (NOTE! 4K = 4096 as its 2^12)
0xFFD
0xFFE
0xFFF
------------------

现在如果我们将页面的 24 位分成两半,12 位用于一级页面,12 位用于二级页面。我们可以处理多少页?

第一级有 2^12 个不同的页面,其中每个条目都指向第二级页面 table。二级页面table也有2^12个条目,每个条目指向一个大小为16KB的框架。

(2^12)*(2^12)*(2^14) = 2^38

使用这个 2 级页面 table,您可以寻址 2^38 个虚拟地址。