分页模式
Intel的64位处理器一共支持3种内存页模式:
- 32 Bit Paging, 32位分页模式
- PAE Paging, PAE分页模式
IA-32e Paging, IA-32e分页模式
这本文中主要还是介绍第一种: 32位分页模式
地址类型
在搞清楚分页的概念之前,需要了解清楚以下几个地址的概念:
- 物理地址
- 线性地址
- 虚拟地址
关于以上三种地址的具体区别和联系,可参见这里
控制寄存器(Control Registers)
你需要了解以下的几个控制寄存器:
- CR0: 包含系统控制的标志位,用于控制系统操作模式和处理器状态
- CR2: 用于保存页错误线性地址
- CR3: 用于保存页表结构物理地址
- CR4: 与架构扩展相关的标志位
分页模式的切换
分页模式的切换主要是通过配置CR寄存器的一些bit来完成的,具体的状态图如下:
其中:
PG代表CR0的bit31
PAE代表CR4的bit5
LME代表MSR IA32_EFER的LME bit
页面大小
32位分页模式支持两种页面大小
- 4KB 页面
- 4MB页面
4KB页面
关于4KB分页
- Offset占12bits
- PT 页表项占10bits
- PD 页目录项占10bits
加起来刚好32bits。
4MB页面
关于4MB的分页,其实相比于4KB的分页要更简单些。取消了PT页表项,只有页目录项和offset。