Intel80386手册——6.3段级保护
Posted ivan-luo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Intel80386手册——6.3段级保护相关的知识,希望对你有一定的参考价值。
Intel80386手册——6.3段级保护
主要包括五个方面:
- 类型检查
- 界限检查
- 寻址范围约束
- 子程序入口点约束
- 指令集约束
段时保护的单元,段描述符中存储着保护机制参数。
6.3.1描述符存储保护机制参数
程序将选择子装入寄存器时,处理器不仅加载段的基址部分,而且也把保护参数装入段寄存器。每个段寄存器有一个不可见的部分用来存放基址、界限、类型和特权级。
作用:对于以后的保护检查,不必浪费时钟周期从内存去加载这些信息。
6.3.1.1类型检查——TYPE字段
- 特定段寄存器所能加载的段描述符有限制,如
- CS寄存器只能加载可执行段的描述符
- SS寄存器只能加载可执行的数据段描述符
- 特定段所能进行的指令操作有限制,如
- 数据段:可写位没有置位,则任何指令不可写入数据
- 可执行段:不允许任何指令写入数据;若可读位没有置位,则任何指令不可读取数据
6.3.1.2界限检查
根据段描述符推算出段的可寻址范围,防止程序在访问一个段时超出段的范围。如,下标出界,非法指针运算。
6.3.1.3特权级
当某个段的一个子程序要访问一个段时,处理器会自动的把一个要访问某个段的子程序的特权级和CPL或者更多的特权级相比。这种比较是在当一个描述符被加载到一个段寄存器时执行的。比较的标准在访问数据时和控制转移时是分别不同的。(见6.3.2,6.3.3)
6.3.2 访问数据约束
寻址一个操作数时,处理器必须将选择子加载至段寄存器中,此时执行特权级的检查。
涉及:
- CPL
- 选择子的RPL
- 目标段的DPL
条件:DPL>=RPL,CPL
即程序只能访问
总结:当任务的CPL改变时,可寻址范围也会改变,CPL=0时,任何特权级的数据段都是可寻址的。
作用:保护操作系统的内部表不被应用程序所读取或更改。
以上是关于Intel80386手册——6.3段级保护的主要内容,如果未能解决你的问题,请参考以下文章