DPL, CPL及RPL之间的关系
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之间的关系的更多相关文章
- .NET Core与.NET Framework、Mono之间的关系
随着微软的.NET开源的推进,现在在.NET的实现上有了三个.NET Framework,Mono和.NET Core.经常被问起Mono的稳定性怎么样,后续Mono的前景如何,要回答这个问题就需要搞 ...
- .NET Core 和 .NET Framework 之间的关系
引用一段描述:Understanding the relationship between .NET Core and the .NET Framework. .NET Core and the .N ...
- 实体之间的关系【Entity Relationships】(EF基础系列篇9)
Here, you will learn how entity framework manages the relationships between entities. Entity framewo ...
- php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系
以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...
- [转] valuestack,stackContext,ActionContext.之间的关系
三者之间的关系如下图所示: ActionContext 一次Action调用都会创建一个ActionContext 调用:ActionContext context = ActionContext ...
- angular源码阅读,依赖注入的原理:injector,provider,module之间的关系。
最开始使用angular的时候,总是觉得它的依赖注入方式非常神奇. 如果你跳槽的时候对新公司说,我曾经使用过angular,那他们肯定会问你angular的依赖注入原理是什么? 这篇博客其实是angu ...
- JavaScript和Java之间的关系
今天来简单而又详细地说说JavaScript和Java的关系. 开门见山总结性一句话,它们之间的关系 = 雷锋和雷峰塔之间的关系,换句话说:它们之间没什么关系. 但往往有不少初学者甚至中级者认为它们之 ...
- PHP类和对象之间的关系
类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...
- 关于计算机的ID和用户ID之间的关系
关于计算机的ID和用户ID之间的关系 计算机安装完系统后就会生成计算机ID,然后系统会以计算机ID为前缀附加数字创建Administrator(500)和Guest(501)用户ID,其他用户的ID将 ...
随机推荐
- linux主机hang住echo 0 > /proc/sys/kernel/hung_task_timeout_secs disables this message
用dmesg显示如下图信息 问题原因: 默认情况下, Linux会最多使用40%的可用内存作为文件系统缓存.当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘, 导致后续的IO请求都是同步的. ...
- RQNOJ PID331 家族
题目描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是 ...
- C语言|博客作业5
---恢复内容开始--- 一.本周教学内容&目标 第2章 用C语言编写程序-函数 2.5 生成乘方表与阶乘表.使学生对函数的定义和调用有初步的认识,能模仿编程. 二.本周作业头 问题 答案 这 ...
- bash 中的特殊变量
bash 中的特殊变量 变量 说明 ------------------------------------ $0 当前脚本的文件名 $n 第n个位置参数 $* 传递给脚本或函数的所有参数,$*会将这 ...
- Linux服务器攻击防御(转)
攻击小贴士 如果你打算做一些搓事,那么你需要采取一些措施来保护自己.这是一切的前提,不然我会追杀你,并破坏你的生活. 我总结了几大忌(fuckups): 不要在honeypots执行操作.(在一切开始 ...
- Rikka with Nickname (简单题)
Rikka with Nickname 链接:https://www.nowcoder.com/acm/contest/148/J来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒空间限制:C/ ...
- 【问题解决方案】anaconda-python在cmd-pip安装requests后依然提示No module named requests
参考: 知乎回答:python的requests安装后idle依然提示No module named requests? 环境: win7-64位 anaconda3-Python3.7 & ...
- JQ广告弹窗&随机抽奖————JQ
1.JQ广告弹窗 <div id="flo"> <img src="image.jpeg"> </div> <scri ...
- Guacamole 远程桌面
本文将Apache的guacamole服务的部署和应用,http://guacamole.apache.org/doc/gug/ 该链接下有全部相关知识的英文文档,如果水平ok,可以去这里仔细查看. ...
- 二、jQuery Ajax请求
一.Ajax请求 1.jQuery Ajax请求 let ajaxTimeOut = $.ajax({ //将网络请求事件赋值给变量ajaxTimeOut url: "/api_v1.1/a ...