计算页面表

时间:2017-07-19 09:45:04

标签: operating-system page-tables

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

我已经计算出帧数为2 ^ 11,因此最低级别的每个条目必须由15位组成(11表示帧号,4表示控制)。我将它四舍五入为16并且更容易计算。

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

当只有一个进程使用内存时,我的外表需要一个页面,内表需要一个页面,因此表格只需要8 KB。

但是我在最大的情况下遇到了一些麻烦。如果整个逻辑地址空间正在使用,那么表占用多少空间?

1 个答案:

答案 0 :(得分:0)

让我们写下我们所知道的

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

如果映射了所有逻辑内存空间:那么您将从级别1获得2^9个条目,每个条目指向包含2^11条目的第二级页表。

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

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

现在外页怎么样? 你有一个,有2 ^ 9个条目,每个条目大小为2B。

这是1KB,但由于页面大小为4KB,因此它将获得整页。

所以答案是:2MB + 4KB,4KB是因为OS在页面中分配内存,即使外表只需要1KB。