多级分页操作系统

Posted

技术标签:

【中文标题】多级分页操作系统【英文标题】:Multilevel Paging Operating System 【发布时间】:2011-11-09 05:07:33 【问题描述】:

我今天在考试中遇到了这个问题:

假设您有一个具有 38 位逻辑地址、16K 页大小和每个页表条目 4 字节的计算机系统。

    逻辑地址空间中有多少页?假设我们使用两级分页,并且每个页表都可以完全放入一个框架中。

    对于上述系统,给出逻辑地址位的分解,明确指出偏移位、页表索引位和页目录索引位的个数。

    假设我们有一个 32MB 的程序,因此整个程序和所有必要的页表(使用两级分页)都在内存中。程序使用了多少内存(以帧数计),包括它的页表?

我该如何解决这样的问题?到目前为止,我一直认为页面大小 = 帧大小,但在这种情况下不会发生。


这是我的想法:

由于页面大小为 16K,我的偏移量将为 17 位 (2^17 = 16K)。现在我如何划分其余的位,帧大小是多少?我将其余的位分成两半吗?

【问题讨论】:

@MichaelPetrotta 很好,因为页面大小是 16K,现在这意味着我的偏移量将是 17 位(2^17 = 16K)。现在我如何划分其余的位,我的帧大小是多少?我要把剩下的部分分成两半吗? @Karan:您在页面内的偏移量是 14 位长,因为 2^14=16384。使用计算器... 【参考方案1】:
    238 / 16384 = 16777216 页。 一方面,剩余的 38-log216384=24 位地址在逻辑地址的页目录和页表部分之间平均分配可能是合理的,因为这种对称性将简化该设计。另一方面,每个页表应该具有与页相同的大小,以便它们可以以与包含程序代码和数据的普通/叶页完全相同的方式卸载到磁盘。幸运的是,在这种情况下,使用 12 位作为页目录索引和页表索引,因为 212 * 4 字节的页表条目大小 = 16384。此外,由于页地址总是至少有 14由于自然页面对齐,有效位设置为零,只有 38-14=24 位的页面地址需要存储在页表条目中,这为其余控制数据提供了 32-24=8 位(目前,主管/用户,可写/不可写,脏,访问等位)。这是我们假设物理地址也不长于 38 位得到的结果。系统可能具有略多于 38 位的物理地址,但代价是控制位更少。总之,一切都合适。所以,38=12(页目录索引)+12(页表索引)+14(偏移量)。 32MB/16KB = 程序本身的 2048 页。每个页表包含 212=4096 个页面,因此您将需要大约 2048/4096=0 个页表来执行此程序。我们将其四舍五入为 1 页表。然后还有页面目录。 2048+1+1=2050 是在内存中包含整个程序及其相关页表所需的页数。

【讨论】:

以上是关于多级分页操作系统的主要内容,如果未能解决你的问题,请参考以下文章

分页式内存管理

分页式内存管理

《操作系统》期末复习

多级页表如何节省内存

开发成长之路(22)-- 不可不知的操作系统知识

开发成长之路(22)-- 不可不知的操作系统知识