DPL: Descriptor Privilege Level

1) GDT/LDT表中的描述符

GDT/LDT表中的描述符,描述的是一段内存。

其中的DPL代表着GDT/LDT中的描述符描述的内存段的特权级别。

比如,当前正在执行的代码,它的特权级别就是当前的CS段选择子指向的段描述符中的DPL所决定的。

即DPL是描述一段内存的特权级别。

2) IDT表中的描述符

IDT表中的描述符,描述的是一个门。

门的概念,与“植物大战僵尸”里面的传送门类似:

假设,上图中的每一行都是有特权级别的,上面行的特权级别比下面行的特权级别高,那么从A处发出的豌豆是无法打中B处的僵尸的。

但是有了传送门,它可以帮忙将A出打出的豌豆提升到B处,从而打中B处的僵尸。

Gate Descriptor的作用也类似,它可以用来帮助提升请求请求代码的特权级别。

使原本没有特权执行内核态代码的用户态程序,可以在Gate的帮助下,执行内核态的代码。

CPL:Current Privilege Level

代表着当前执行的代码段的特权级别

RPL:Request Privilege Level

用于描述段选择子。

段选择子是用来选择GDT/LDT中段描述符描述的内存段的。

RPL代表着一次申请访问估内容时,使用的特权级别,用RPL来代替请求程序本身的CPL,用于特权级别检查。

下面我们查看一个例子:

IDT中第0x80项代表“系统调用”的入口:

   1: [  80] 0x00000060[index=000C, TI=0, RPL=0] : 0xc152c898, P[1] DPL[3] Type[       Trap Gate] 

而它里面的0x00000060段选择子,选择的是GDT中的0x000C项

   1: [   C] 0x00000000 : 0xffffffff, G[1] D/B[1] P[1] DPL[0] S[1] Type[11] Code[Read-Enable Accessed ]

根据这个例子,我们可以理解为

1) 用户态程序的CPL为3, 它请求的Gate描述符项的DPL为3,请求通过。

2) Gate描述符进一步代表用户态程序请求访问内核态的代码段时,RPL为0, 而目标代码段的DPL也为0,这一步请求也通过。

DPL, CPL及RPL之间的关系的更多相关文章

  1. .NET Core与.NET Framework、Mono之间的关系

    随着微软的.NET开源的推进,现在在.NET的实现上有了三个.NET Framework,Mono和.NET Core.经常被问起Mono的稳定性怎么样,后续Mono的前景如何,要回答这个问题就需要搞 ...

  2. .NET Core 和 .NET Framework 之间的关系

    引用一段描述:Understanding the relationship between .NET Core and the .NET Framework. .NET Core and the .N ...

  3. 实体之间的关系【Entity Relationships】(EF基础系列篇9)

    Here, you will learn how entity framework manages the relationships between entities. Entity framewo ...

  4. php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系

    以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...

  5. [转] valuestack,stackContext,ActionContext.之间的关系

    三者之间的关系如下图所示: ActionContext  一次Action调用都会创建一个ActionContext  调用:ActionContext context = ActionContext ...

  6. angular源码阅读,依赖注入的原理:injector,provider,module之间的关系。

    最开始使用angular的时候,总是觉得它的依赖注入方式非常神奇. 如果你跳槽的时候对新公司说,我曾经使用过angular,那他们肯定会问你angular的依赖注入原理是什么? 这篇博客其实是angu ...

  7. JavaScript和Java之间的关系

    今天来简单而又详细地说说JavaScript和Java的关系. 开门见山总结性一句话,它们之间的关系 = 雷锋和雷峰塔之间的关系,换句话说:它们之间没什么关系. 但往往有不少初学者甚至中级者认为它们之 ...

  8. PHP类和对象之间的关系

    类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...

  9. 关于计算机的ID和用户ID之间的关系

    关于计算机的ID和用户ID之间的关系 计算机安装完系统后就会生成计算机ID,然后系统会以计算机ID为前缀附加数字创建Administrator(500)和Guest(501)用户ID,其他用户的ID将 ...

随机推荐

  1. 【转】Selenium 加载Chrome/Firefox浏览器配置文件

    原文地址:https://www.cnblogs.com/eastonliu/p/9083982.html Selenium启动浏览器时,默认是打开一个新用户,不会加载原有的配置以及插件.但有些时候我 ...

  2. ssd存储的SLC、MLC、TLC闪存芯片颗粒有什么区别?

    SLC = Single-Level Cell ,即1bit/cell,速度快寿命长,价格贵(约MLC 3倍以上的价格),约10万次擦写寿命: MLC = Multi-Level Cell,即2bit ...

  3. linux在二进制文件中查找pattern的offset

    参考:http://stackoverflow.com/questions/14141008/grep-offset-of-ascii-string-from-binary-file strings ...

  4. CSS div内放长英文字母或长数字自动换行 CSS一行排不下自动打断换行

    添加css  word-wrap:break-word 解释:使用break-word时,是将强制换行. 兼容各版本IE浏览器,兼容谷歌浏览器.

  5. Codeforces 492D Vanya and Computer Game

    D. Vanya and Computer Game time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  6. Elasticsearch学习,请先看这一篇

    题记: Elasticsearch研究有一段时间了,现特将Elasticsearch相关核心知识.原理从初学者认知.学习的角度,从以下9个方面进行详细梳理.欢迎讨论-- 0. 带着问题上路--ES是如 ...

  7. 54.Counting Bits( 计算1的个数)

    Level:   Medium 题目描述: Given a non negative integer number num. For every numbers i in the range 0 ≤ ...

  8. wireshark 识别http的标准

    使用route add 本机ip 255.255.255.255 网关ip metric 1 的方式 会使访问本机ip的连接发送到局域网内,这样wireshark就可以抓取到 但有一点需要注意 如果本 ...

  9. Web前端基础学习-3

    bfc(block formatting context) 块级格式化上下文 生成bfc的方式: 1.根元素: 2.float属性不为none(脱离文档流): 3.position为absolute或 ...

  10. LeetCode Linked List Medium 2. Add Two Numbers

    Description You are given two non-empty linked lists representing two non-negative integers. The dig ...