我试图了解多级页表如何节省内存。据我了解,多级页表总共比单级页表消耗更多的内存。
示例:考虑一个页面大小为 64KB 和 32 位处理器的内存系统。页表中的每个条目都是 4 个字节。
单级页表:需要 16 (2^16 = 64KB) 位来表示页偏移。所以其余 16 位用于索引页表。所以
*页表大小 = 2^16(页数)* 4 字节(每个页表条目的大小)= 2^18 字节*
多级页表:在两级页表的情况下,让我们使用前 10 个最高有效位来索引第一级页表。接下来的 10 位索引到二级页表中,该页表具有页号到帧号的映射。其余 12 位代表页面偏移量。
二级页表的大小 = 2^10(条目数)* 4 字节(每个条目的大小)= 4 KB
所有二级页表的总大小 = 2^10 (二级页表的数量) * 4KB (每个二级页表的大小) = 4 MB
一级页表大小 = 2^10(# of entries) * (10/8) Bytes (Size of each entry) = 1.25 KB
存储一级和二级页表所需的总内存 = 4 MB + 1.25 KB
所以我们需要更多的内存来存储多级页表。
如果是这样,多级页表如何节省内存空间?