80386保护机制

  • 类型检查

  • 限制检查

  • 可寻址域约束

  • 程序入口点约束

  • 指令集约束

段级别保护

段级别的保护参数是保存在段描述中可以参照GDT全局描述表

类型检查

描述符中访问控制有2个功能

  • 不同的描述符定于(代码段与数据段的访问控制中的意义)

  • 指定段用处

cpu会通过端加载的selector中指定的端描述进行类型检查

  • 只能讲代码段加载到CS寄存器

  • 不能将代码段加载到DS寄存器

  • 只能将数据段加载到SS

限制检测

limit保护程序不会访问到段描述设定以外的内存。 如果程序试图访问段描述限制以外的内存将出现异常。

访问地址约束

内存地址操作 cpu通过selector将数据段加入到段寄存器(DS, SS, ES, FS, GS), cpu自动评估比较特权级别。不同的特权级别使用不同的特权比较。

控制转移约束

80386中控制转移(control transfer)是通过指令(JMP, CALL, RET, INT, IRET)与异常和中断完成。

near格式的(jmp,call,ret)只是在当前段转移,因此只需要检查limit。只要不超出limit限制就行。

而far格式的(jmp, call)中涉及到其他段,因此需要特权检测。

  • 使用其他的段描述

  • 选择调用门描述

门描述保证程序入口点

  • 调用门(call gate)

  • 陷入门(trap gate)

  • 陷入门(trap gate)

  • 中断门(interrupt gate)

  • 任务门(task gate)

调用门描述用于跳转指令用相同方式在不同段中跳转,陷入门与中断门用于陷入与中断,任务门用于任务切换。



blog comments powered by Disqus

Published

2015-12-22

Categories


Tags