zoukankan      html  css  js  c++  java
  • Intel80386手册——6.3段级保护

    Intel80386手册——6.3段级保护

    主要包括五个方面:

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

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

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

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

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

    ![1572154970401](file://C:/Users/adminLuo/AppData/Roaming/Typora/typora-user-images/1572154970401.png?lastModify=1572155271)

    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时,任何特权级的数据段都是可寻址的。

    作用:保护操作系统的内部表不被应用程序所读取或更改。

  • 相关阅读:
    代码301的弊端和处理方法
    seo如何发外链
    seo工程师是什么,需要什么技能?
    优化一个关键词到百度首页需要多少钱
    搜索引擎优化顾问机构好不好
    谷歌分析(GA)新版的有哪些改变
    什么是相关性链接/网站相关性
    JS的部分部分疑问和小结
    Groovy学习:第一章 用Groovy简化Java代码
    SpringMVC学习(8):国际化
  • 原文地址:https://www.cnblogs.com/Ivan-Luo/p/11747858.html
Copyright © 2011-2022 走看看