1.修改段寄存器时的保护
- 索引值 * 8 + 7<= 边界 => 取得描述符;
- 看描述符TYPE字段是否有效;
- 检查描述符TYPE字段是否与段寄存器要求匹配,规则如下表:
段寄存器 | 数据段 | 代码段 | ||
---|---|---|---|---|
W=0(只读) | W=1(读写) | R=0(只执) | R=1(执+写) | |
CS | N | N | Y | Y |
DS | Y | Y | N | Y |
ES | Y | Y | N | Y |
FS | Y | Y | N | Y |
GS | Y | Y | N | Y |
SS | N | Y | Y | Y |
- 检查描述符P位,P=0即不在内存中,引发异常中断11(应定义一个中断处理程序,把该段调到内存中,置P位);P=1则将描述符加载到段寄存器缓存器,置TYPE字段的A位;