给定32位的逻辑地址空间,8 MB的内存和4 KB的页面大小,计算2级Hierarchical Paging表的最大大小。每个条目包含一个额外的4位控制序列。
我已经计算出帧数为2 ^ 11,因此最低级别的每个条目必须由15位组成(11表示帧号,4表示控制)。我将它四舍五入为16并且更容易计算。
我已经将从LSB开始的逻辑32位地址分解为12位用于物理内存偏移,11位用于内部页面偏移(考虑每个条目一页是2个字节)和9用于外页。
当只有一个进程使用内存时,我的外表需要一个页面,内表需要一个页面,因此表格只需要8 KB。
但是我在最大的情况下遇到了一些麻烦。如果整个逻辑地址空间正在使用,那么表占用多少空间?
答案 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。