计算页面的最小和最大尺寸 table

Calculate the minimum and maximum size of a page table

给定一个 32 位的逻辑地址 space,8 MB 的内存和 4 KB 的页面大小,计算 2 级分层分页的最大大小 table。每个条目包含一个额外的 4 位控制序列。

我计算出帧数为2^11,因此最低层的每个条目必须由15位组成(11位用于识别帧号,4位用于控制)。为了更容易计算,我将其四舍五入为 16。

我已经将从我的 LSB 开始的逻辑 32 位地址分解为 12 位用于物理内存偏移,11 位用于内页偏移(考虑到每个条目一个页面是 2 个字节)和 9 位用于外页。

当只有一个进程使用内存时,我的外部 table 需要一页,内部 table 需要一页,因此 table 只需要 8 KB .

但是我在处理最大情况时遇到了一些问题。如果整个逻辑地址 space 都在使用中 space table 需要多少?

让我们写下我们所知道的

32 bits logical address space
8 MB RAM
4 KB page size
9 bits for outer page table
11 bits for inner page table

如果所有逻辑内存 space 都被映射:那么您有 2^9 个来自级别 1 的条目,每个条目都指向包含 2^11 个条目的二级页面 table。

因此,对于二级页面 table,您有 2^9 个,每个页面都有 2^11 个条目。即:(2^9)*(2^11)*2B = 2MB

因此,对于所有二级页面 table,您需要 2MB

现在外页呢? 您有一个,其中有 2^9 个条目,每个条目的大小为 2B。

那是 1KB,但由于页面大小为 4KB,所以它会得到一整页。

所以答案是:2MB + 4KB,4KB 是因为 OS 以页为单位分配内存,即使外部 table 只需要 1KB。