为什么保护模式跳回实模式要选择一个NormalSelector

来源:互联网 发布:js newstring 编辑:程序博客网 时间:2024/05/02 04:17

来自:http://blog.csdn.net/lancedegate/article/details/1558795

段寄存器段基地址段界限(固定)存在性特权级已存取粒度扩展方向可读性可写性可执行堆栈大小一致特权CS当前CS*160000FFFFHY0YBUYYY-NSS当前SS*160000FFFFHY0YBUYYNW-DS当前DS*160000FFFFHY0YBUYYN--ES当前ES*160000FFFFHY0YBUYYN--FS当前FS*160000FFFFHY0YBUYYN--GS当前GS*160000FFFFHY0YBUYYN--

在分段管理机制一文中已介绍过,每个段寄存器都配有段描述符高速缓冲寄存器,这些高速缓冲寄存器在实方式下仍发挥作用,只是内容上与保护模式下有所不同。如上表所示,其中“Y”表示“是”; “N”表示“否”;“B”表示字节;“U”表示向上扩展,“W”表示以字方式操作堆栈。段基地址仍是 32位,其值是相应段寄存器值(段值)乘以16,在把段值装载到段寄存器时刷新。由于其值是16位段值乘上16,所以在实模式下基地址实际上有效位只有20位。每个段的20位段界限都固定为0FFFFH,段属性的许多位也是固定的。所谓固定是指在实方式下不可设置这些属性值,只能继续沿用保护方式下所设置的值。因此,在准备结束保护模式回到实模式之前,要通过加载一个合适的描述符选择子到有关段寄存器,以使得对应段描述符高速缓冲寄存器中含有合适的段界限和属性。本实例GDT中的描述符Normal就是这样一个描述符,在返回实模式之前把对应选择子Normal_Sel加载到DSES就是此目的。
原创粉丝点击