Intel80386手册——6.3段级保护

Posted ivan-luo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Intel80386手册——6.3段级保护相关的知识,希望对你有一定的参考价值。

Intel80386手册——6.3段级保护

主要包括五个方面:

  • 类型检查
  • 界限检查
  • 寻址范围约束
  • 子程序入口点约束
  • 指令集约束

段时保护的单元,段描述符中存储着保护机制参数

6.3.1描述符存储保护机制参数

程序将选择子装入寄存器时,处理器不仅加载段的基址部分,而且也把保护参数装入段寄存器。每个段寄存器有一个不可见的部分用来存放基址、界限、类型和特权级。

作用:对于以后的保护检查,不必浪费时钟周期从内存去加载这些信息。

技术图片

6.3.1.1类型检查——TYPE字段

  1. 特定段寄存器所能加载的段描述符有限制,如
    • CS寄存器只能加载可执行段的描述符
    • SS寄存器只能加载可执行的数据段描述符
  2. 特定段所能进行的指令操作有限制,如
    • 数据段:可写位没有置位,则任何指令不可写入数据
    • 可执行段:不允许任何指令写入数据;若可读位没有置位,则任何指令不可读取数据

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段级保护的主要内容,如果未能解决你的问题,请参考以下文章

ucore实验Lab1知识点总结

Intel X86 CPU寻址方式

Pwn_9 作业讲解

操作系统学习 保护机制概述

Intel保护模式下的保护机制,Descriptor Fields Used for Protection

Intel 80386 CPU