80386保护机制
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