启用分页机制
分页机制可解除线性地址与物理地址一一对应的关系,实现更灵活的地址映射。
一级页表
开启保护模式后,寻址空间为4GB,即线性地址空间是4GB,它在逻辑上连续。通过映射可以使线性地址与任意的物理地址相关联,线性的逻辑地址对应的物理地址可以不连续。由于开启了分页,因此线性地址有了新名字:虚拟地址
代码段和数据段被拆分成以页为单位的小内存块,然后操作系统开始为虚拟内存页分配真实的物理内存页。
页表由页表项组成,每个页表项记录了一个物理地址。
虚拟地址先根据页表确定物理页,然后根据偏移地址得到实际的物理地址
对于虚拟地址与物理地址的映射有以下公式:
物理地址 = 虚拟地址高 20 位 ∗ 4 + 虚拟地址低 12 位 物理地址=虚拟地址高20位*4+虚拟地址低12位 物理地址=虚拟地址高20位∗4+虚拟地址低12位
二级页表
二级页表增加了页表的页表,又名页目录项
虚拟地址的高10位用来定位一个页目录项,也就是定位到某个页表;中间10位定位页表项,也就是定位到某个物理页;最后12位为页偏移量
启用分页机制
(1)准备好页目录表及页表
(2)将页表地址写入控制寄存器
(3)寄存器cr0的PG位置1
1.操作系统与用户进程的关系
用户进程必须与操作系统结合才能完成任务,因此操作系统必须共享给所有用户进程。
由于32位程序能应用的内存上限为4G,我们只需要让所有用户进程的3-4G空间都指向操作系统的页表即可