分页是我们将整个过程转换为相等大小的页面的过程。每页进一步由固定数量的字组成(如果它是字可寻址的)。
页由 CPU 生成的虚拟地址表示。这些页被 MMU 映射到物理地址。因此,为了帮助进行这种映射,我们使用了页表的概念。就像数组一样,在页表中,索引代表页码,内容包含进程实际加载到主内存中的帧号的地址。因为虚拟/逻辑地址相对于零,应该映射到主内存的实际物理地址空间。
页表的大小可以通过给定页表每个条目的大小来计算,否则如果不给定,那么我们可以找到在主存储器中寻址每个帧所需的位数(这不是正确,但应在未给出任何问题时使用)。
Page Table Size = No. of Page Table Entries(Total no. of Pages) * (size of each entry of page table)
当页表的大小小于一帧的大小时,我们不必担心,因为我们可以直接将页表放在主存的一个帧中,这样我们就可以直接访问页表。
但是如果页表的大小大于Frame的大小。然后将返回的页表分成若干页,页表的这些页将存储在主存储器中。因此,外页表出现了。
该外页表将包含主存储器中包含内页表的页(即,页表一页)的帧的地址。
这个Outer Page的大小也是按照上面解释的方法计算出来的,用来计算内页Table的大小。现在,如果内页表的大小小于或等于框架的大小,那么我们可以停在这里,因为我们能够将最外层的表保留在单个框架中。
这称为两级寻呼。
例子:
考虑给定,
Physical Address Space = 2(44) B
Virtual Address Space = 2(32) B
Page Entry = 4B
Page Size = 4Kb
So, No.of Frame = 2(32)
No. of Pages Of the Process = 2(20)
Page Table 1 size =2(20) * 4 B= 4 MB
因为,它大于 4B(帧大小)。因此,这个页表必须转换为页
页表2的页数(外页表)
= 2(22)*2(-12)= 2(10) pages
所以,外页表的大小
= 2(10) * 4B = 4KB
因此,这里我们的外页表(页表 2)可以存储在一帧中。
因此,我们可以停在这里。
这是两级分页,因为这里我们有 2 个页表。
但是如果页表的大小仍然大于帧大小,那么我们必须继续直到我们到达最外层表的大小小于帧大小的阶段。这个概念被称为多级分页。我们的目标应该是将最外面的页表保留在单个框架中。