📜  操作系统中的两级分页和多级分页

📅  最后修改于: 2021-09-27 14:34:14             🧑  作者: Mango

分页是我们将整个过程转换为相等大小的页面的过程。每页进一步由固定数量的字组成(如果它是字可寻址的)。

页由 CPU 生成的虚拟地址表示。这些页被 MMU 映射到物理地址。因此,为了帮助进行这种映射,我们使用了页表的概念。就像数组一样,在页表中,索引代表页码,内容包含进程实际加载到主内存中的帧号的地址。因为虚拟/逻辑地址相对于零,应该映射到主内存的实际物理地址空间。

页表的大小可以通过给定页表每个条目的大小来计算,否则如果不给定,那么我们可以找到在主存储器中寻址每个帧所需的位数(这不是正确,但应在未给出任何问题时使用)。

当页表的大小小于一帧的大小时,我们不必担心,因为我们可以直接将页表放在主存的一个帧中,这样我们就可以直接访问页表。

但是如果页表的大小大于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 个页表。

但是如果页表的大小仍然大于帧大小,那么我们必须继续直到我们到达最外层表的大小小于帧大小的阶段。这个概念被称为多级分页。我们的目标应该是将最外面的页表保留在单个框架中。