给定32位的逻辑地址空间、8MB的内存和4KB的页面大小,计算2层分层寻呼表的最大大小。每个条目包含一个额外的4位控制序列。
我已经计算出帧数为2^11,因此最低层中的每个条目必须由15位组成(11用于标识帧号,4用于控制)。为了便于计算,我把它舍入16位。
我已经将逻辑32位地址从我的LSB分解为12位用于物理内存偏移量,11位用于内部页偏移量(假设每个条目为2字节)和9位用于外部页。
当只有一个进程正在使用内存时,我需要外层表一页,内部表一页,因此表只需要8KB。
不过,我在最大限度的案子上遇到了一些麻烦。如果整个逻辑地址空间都在使用中,那么表需要多少空间?
发布于 2017-07-19 11:10:59
让我们写下我们所知道的
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。
https://stackoverflow.com/questions/45186818
复制相似问题