总结:从实模式到保护模式的相关寄存器和相关数据结构之间的联系
1.怎么进入保护模式
段描述符
段描述符:
实模式下的用户可以破坏存储代码的内存区域 ,用段描述符来对某一段进行描述内存段类型属性来阻止这种行为。8个字节大小
全局描述符表
全局描述符表的作用:存放段描述符的地方。全局描述符表放置在内存中,通过用GDTR寄存器保存全局描述符在内存中的首地址。使用mov gdtr ,xxx 这样的指令为gdtr初始化。大小为6个字节:高32位为GDT内存起始地址,低16位为GDT界限。由GDT界限可以知道全局描述符表的所能容纳的最大段描述符个数为2的13次方。
选择子
选择子保存在段寄存器中,在保护模式下段寄存器位数为16位。所以选择子也是16位。高13位描述符索引值,TI表示是在全局描述符下还是在局部描述符下。RPL是请求的特权级别。
从段寄存器中的选择子确定在全局描述符表中的段描述符,再根据段描述符中的段基址可以确定内存地址。
打开A20地址
打开A20Gate的方式,将端口0x92的第1位置1就可以了
保护模式的开关,CR0寄存器的PE位
将CR0寄存器中的第0位置为1,PE为使能保护模式。
进入保护模式之后启动分页机制:
分页机制-二级分页(在二级分页中涉及的寄存器和数据结构)
启动分页机制的三大步骤:
1.准备好页目录表及页表
2.将页表地址写入到CR3寄存器中
3.将寄存器CR0的PG位置1
将从选择子到全局描述符表到内存地址再通过二级分页到物理地址,寻找过程如下:
段部件:将地址转为线性地址
页部件:将线性地址拆分成三部分,高10位,中间10位,低12位,这三部分。
CR3寄存器(页目录基址寄存器 PDBR)
页目录表
页目录表:存放页目录项的地方,页目录项可以提供页表的物理地址的首地址,高20位提供页表物理页地址,低12位提供页表的属性。
页表
页表:存放页表项的地方,页表项可以提供物理页的首地址,高20位提供物理页地址,低12位提供物理页的属性。
TLB表(快表)
快表:快速查找虚拟地址对应的物理地址