分页内存管理
32-bit
在x86(32bit)架构中,需要管理4GB(2^32)的内存。
- 通常一个“一级页表”是由1024个表项组成的,每个表项存储了物理页面的相关信息。
- 页目录也是一个由1024个表项组成的“二级页表”,只不过其每一项都代表了一级页表的索引号。
由于每个页面大小是4KB,所以通过此二级页表,就可以管理 4KB * 1024 * 1024 = 4GB 的内存了。
总之多级页表的作用就是通过尽可能少的空间来管理尽可能多的内存,起到的是内存映射的效果。
具体在此架构(32bit)下,由虚拟地址VA映射到物理地址PA的过程用图表示为:

一个32位的虚拟地址,就可以索引:10+10+12 –> 2^10 * 2^ 10 * 2^12Byte –> 1024 * 1024 * 4KB = 4GB 的内存
管理一级页表需要1024*32bits=4KB的内存,管理二级页表需要 102*1024*32bits=4MB的内存。
64-bit
类推得,64-bit需要分成四级

- Page Global Directory
- Page Upper Directory
- Page Middle Directory
- Page Table Entry