计算页表的最小和最大大小

问题描述:

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

我已经计算出帧数为2^11,因此最低级别的每个条目必须包含15位(11个用于识别帧号和4个用于控制)。为了更简单的计算,我把它四舍五入到了16。

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

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

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

让写什么,我们知道

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是因为操作系统在页面中分配内存,即使外层表只需要1KB。