linux操作系统中特权级有3种:CPL,DPL和RPL,每个都是有4个等级。

我对他们的关系理解是这样:一般来说,CPL代表当前代码段的权限,如果它想要去访问一个段或门,首先要看看对方的权限如何,也就是检查对方的DPL,如果满足当前的权限比要访问的权限高,则有可能允许去访问,有些情况我们还要检查
选择子的权限,即RPL,因为我们通过选择子:偏移量的方式去访问一个段,这算是一个访问请求动作,因此
称为请求访问权限RPL(Requst Privilege Level)。当请求权限也满足条件,那么访问就被允许了。

CPL(Current Privilege Level)
CPL是当前执行的任务的特权等级,它存储在CS和SS的第0位和第1位上。(两位表示0~3四个等级)
通常情况下,CPL等于代码所在段的特权等级,当程序转移到不同的代码段时,处理器将改变CPL。
注意:在遇到一致代码段时,情况特殊,一致代码段的特点是:可以被等级相同或者更低特权级的代码访问,当处理器访问一个与当前代码段CPL特权级不同的一致代码段时,CPL不会改变。

DPL(Descriptor Privilege Level)
表示门或者段的特权级,存储在门(中断描述符IDT)或者段的描述符(GDT)的DPL字段中。正如上面说的那样,当当前代码段试图访问一个段或者门时,其DPL将会和当前特权级CPL以及段或门的选择子比较,根据段或者门的类型不同,DPL的含义不同:
    1.数据段的DPL:规定了访问此段的最低权限。比如一个数据段的DPL是1,那么只有运行在CPL为0或1的程序才可能访问它。为什么说可能呢?因为还有一个比较的因素是RPL。访问数据段要满足有效特权级别(上述)高于数据段的DPL.
    2.非一致代码段的DPL(不使用调用门的情况):DPL规定访问此段的特权,只有CPL与之相等才有可能访问。
    3.调用门的DPL,规定了程序或任务访问该门的最低权限。与数据段同。
    4.一致代码段和通过调用门访问的非一致代码段,DPL规定访问此段的最高权限。
     比如一个段的DPL为2,那么CPL为0或者1的程序都无法访问。
   5. TSS的DPL,同数据段。
 
RPL(Rquest Privilege Level)
RPL是通过选择子的低两位来表现出来的(这么说来,CS和SS也是存放选择子的,同时CPL存放在CS和SS的低两位上,那么对CS和SS来说,选择子的RPL=当前段的CPL)。处理器通过检查RPL和CPL来确认一个访问是否合法。即提出访问的段除了有足够的特权级CPL,如果RPL不够也是不行的(有些情况会忽略RPL检查)。


为什么要有RPL?

操作系统往往通过设置RPL的方法来避免低特权级的应用程序访问高特权级的内层数据。
例子情景:调用者调用操作系统的某过程去访问一个段。
当操作系统(被调用过程)从应用程序(调用者)接受一个选择子时,会把选择子的RPL设置称调用者的权限等级,于是操作系统用这个选择子去访问相应的段时(这时CPL为操作系统的等级,因为正在运行操作系统的代码),处理器会使用调用者的特权级去进行特权级检查,而不是正在实施访问动作的操作系统的特权级(CPL),这样操作系统就不用以自己的身份去访问(就防止了应用去访问需要高权限的内层数据,除非应用程序本身的权限就足够高)。

那么RPL的作用就比较明显了:因为同一时刻只能有一个CPL,而当低权限的应用去调用拥有至高权限的操作系统的功能来访问一个目标段时,进入操作系统代码段时CPL变成了操作系统的CPL,如果没有RPL,那么权限检查的时候就会用CPL,而这个CPL权限比应用程序高,也就可能去访问需要高权限才能访问的数据,这就不安全了。所以引入RPL,让它去代表访问权限,因此在检查CPL的同时,也会检查RPL.一般来说如果RPL的数字比CPL大(权限比CPL的低),那么RPL会起决定性作用。

linux操作系统CPL、DPL、RPL说明相关推荐

  1. CPL DPL RPL的区别 一致性代码段和非一致性代码段

    概述:在谈论保护模式编程的时候,一直会有这样的困惑:为什么除了CPL和DPL还有RPL?什么时候高特权级不能访问低特权级?什么时候低特权级不能访问高特权级?一致性代码和非一致性代码有什么区别?等等这些 ...

  2. X86(IA32)段权限标志位CPL DPL RPL详解

    1.DPL,RPL,CPL 之间的联系和区别是什么?RPL和CPL是必须相同吗?如果相同,为什么要釆用两个而不改用一个呢? 答:特权级是保护模式下一个重要的概念,CPL,RPL和DPL是其中的核心概念 ...

  3. 保护模式 对CPL,RPL,DPL 的总结

    先说下特权级的概念,在保护模式下,系统依靠特权级来实施代码和数据的保护,相当于权限 啦.特权级共有4 个级别,0,1,2,3,数字越小表示权限越高.如图: 较为核心的代码和数据放在较高(靠内)的层级中 ...

  4. DPL,RPL,CPL 之间的联系和区别

    之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉. 但是有时候用户程序也需要读取内核的某些数据,怎么办呢? 操作系统就引入了访问特权等级(0-3)的机制. ...

  5. CPU段访问控制:特权级(RPL CPL DPL)和代码段一致性

      最近笔者回顾CPU硬件的段访问控制机制,重新看到了代码段一致性问题.虽然目前操作系统没有应用分段机制,但了解其运行原理仍然具有吸引力XD.本片文章,我们就来理清CPU段访问控制中,代码段一致性的概 ...

  6. DPL RPL CPL区别与联系

    先说说他们的含义和存储的位置! PL:Privilege Level.特权级 CPL(Current):当前任务的特权级!内核态的时候,CPL = 0,用户态的时候,CPL = 3:linux中只用了 ...

  7. Linux操作系统原理与应用02:内存寻址

    目录 1. 内存寻址 1.1 X86寻址技术演变 1.1.1 8086引入段机制 1.1.2 80286引入保护模式 1.1.3 80386在段寄存器上构建保护模式 1.2 80x86寄存器简介 1. ...

  8. Linux操作系统基础 Intel32位系统架构总览

    前言 说是Linux操作系统基础,其实应该是Intel IA-32架构,但是以学习Linux操作系统为目的,故而称为<Linux操作系统基础>.本部分开始主要讲解80x86保护模式下基本概 ...

  9. linux不断安装操作系统,无人值守批量安装linux操作系统

    无人值守批量安装linux操作系统(实验总结) 每天都看对着电脑的操作系统,有时候出现了什么问题实在解决不了,我们肯定会选择重做系统的,当然一台两台系统我们还是可以一一搞定,可是我们是否想过要是一次性 ...

最新文章

  1. 计算机专业只考408吗,关于计算机考研408的那些事儿
  2. A、B、C、D、E五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪
  3. 高级会计师计算机考试中级,会计师需要计算机等级考试吗
  4. Oracle数据库基本操作
  5. 排序算法-冒泡排序算法
  6. NIS 报错No such map passwd.byname. Reason: Can't bind to server which serves this domain
  7. 什么是BT1120协议
  8. lcd1602c语言程序分析,LCD1602 测试C程序
  9. Vue 开发环境搭建步骤
  10. Excel如何实现下拉选项 二级下拉框 数据联动
  11. 淘宝带你走进——幽灵Crash迷踪案
  12. Pom文件配置参数详解
  13. Spring的回炉重造
  14. 图可视化工具Gephi使用教程
  15. Python报错 TypeError: super(type, obj): obj must be an instance or subtype of type
  16. Java导出Excel加电子回章_使用Excel制作一个喜欢的DIY电子印章
  17. 对于阶梯式矩阵(起点在左上角)
  18. 群论学习——几种基本的群
  19. HTML制作个人网页制作(简单静态HTML个人博客网页作品)
  20. OBD车载诊断系统、移动管家车联网汽车OBD诊断系统车辆信息管理硬件

热门文章

  1. 如何成为一个优秀的小程序代理商?
  2. MUI+H5开发移动APP/网易邮箱大师项目实战/Android、IOS跨平台应用开发-王翠英-专题视频课程...
  3. BOOTSTRAP 编码规范 by @mdo
  4. 天气变冷了,给父母制作一个天气提醒小助手
  5. matlab绘制棒棒糖,可视化技能之Matplotlib(上)|可视化系列01
  6. Python语言基础学习(六)
  7. 数据分析之实例二:物流行业数据分析
  8. 用RTKLIB中的rtkpost进行ppp和spp定位(附用CUI rnx2rtkp 编译)
  9. WX(微信)找回误删的好友,仅做学习只用
  10. Ubuntu18.04下磕磕磕绊绊绊编译安装GCC6.3的过程