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

Operating system 计算页表的最小和最大大小,operating-system,page-tables,Operating System,Page Tables,给定32位的逻辑地址空间、8MB的内存和4KB的页面大小,计算2级分层分页表的最大大小。每个条目包含一个额外的4位控制序列 我已经计算出帧数为2^11,因此最低级别的每个条目必须由15位组成(11位表示帧数,4位表示控制)。为了方便计算,我把它四舍五入到16 我已经将从LSB开始的逻辑32位地址分解为物理内存偏移量的12位,内部页面偏移量的11位(考虑到一个页面的每个条目是2字节),外部页面的9位 当只有一个进程在使用内存时,我需要一页用于外部表,一页用于内部表,因此表只需要8KB 但是我在最大

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

我已经计算出帧数为2^11,因此最低级别的每个条目必须由15位组成(11位表示帧数,4位表示控制)。为了方便计算,我把它四舍五入到16

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

当只有一个进程在使用内存时,我需要一页用于外部表,一页用于内部表,因此表只需要8KB


但是我在最大情况下遇到了一些问题。如果整个逻辑地址空间都在使用中,那么表需要多少空间?

让我们写下我们知道的内容

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。

让我们写下我们知道的

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