热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

5特权级

CPU分级处于保护模式下的CPU,有4种运行级别。图1CPU不同运行级别围绕在最中心的那个圆心,叫Ring0,中文叫0环,

CPU分级

处于保护模式下的 CPU,有4种运行级别。



这里写图片描述
图1 CPU不同运行级别

围绕在最中心的那个圆心,叫 Ring 0,中文叫 0 环,这里运行特权级最高的代码。我在这里避免说这个级别运行操作系统内核,这是因为这是给设计操作系统的人看的。就目前来看,我不还不要和操作系统拉上关系,因为知识还不够。

中间的 1 环和 2 环很少使用。最外层的 3 环,是运行级别最低的。


怎样查看程序处于哪个运行级别?

打开你的 OD 程序,随便 open 一个 exe 程序,然后观察 cs 段寄存器的值。



这里写图片描述
图2 查看程序当前在哪个运行级别

可以观察到 CS 的值现在是 0x1B(剩余的80位隐藏位我们还不用关心)。然后看 0x1B 的最低 2 位进制位,这个值是 11b,换算成 10 进制数就是 3. 所以当前程序处于 3 环。

当前程序的运行级别有一个固定的名字,叫 CPL(当前特权级)。在这里 CPL = 3.


DPL

之前遗留的一个段描述符属性——DPL,这是段描述符的特权级。它的含义是,如果你(处于某个当前特权级下的程序)想访问我这个段,你应当具备什么样的级别。


比如某个政府机构,它规定了,只允许市长及其以上级别的人才能进入。这个机构要求的级别就是 DPL(=0),而市长本人的这个职称就是 CPL(=0)。倘若你一个村长(CPL=3)想进这个地方,必然会被拒绝。



RPL

RPL的值只存在于段选择子中。注意,不是段寄存器中,不是段寄存器中,不是段寄存器中。

段选择子就是一个数字,前面讲过,它有三段结构,分别是“索引-TI指示-RPL”

它的含义是当前我想以 RPL 这个级别来请求你把这个段选择子置入段寄存器。实际上 RPL 并没有什么用。因为请求者任何时刻都可以让 RPL = 0。但是如果请求者是 CPL = 0 的程序,用 RPL = 3 的级别来请求 DPL = 0的数据段,必然会失败。

这什么意思呢?举个例子:


省长以省长的身份去办事情的时候(CPL=0的程序以RPL=0的级别去请求DPL=0的数据段),肯定没什么问题。省长以平民的身份去办事情的时候(CPL=0的程序以RPL=3的级别去请求DPL=0的数据段),肯定会失败。

平民以省长的身份去办事情的时候(CPL=3的程序以RPL=0的级别去请求DPL=0的数据段),结果可想而知……失败!!!



总结

本篇中,可能难以理解的是 RPL,没关系,随着后面知识的跟进,你也会慢慢理解。


推荐阅读
  • 近期遇到电脑网络不稳定和游戏时频繁重启的问题,寻求专业建议。网络环境为ADSL调制解调器通过路由器共享给两台电脑使用,怀疑存在ARP攻击或硬件配置问题。希望获得详细的故障排查和解决方案。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 本文探讨了现代信号处理系统的核心组件,包括数据转换、数据交互和数据处理。详细介绍了AD/DA转换、串/并转换、编解码转换等技术,并讨论了FPGA在信号处理中的应用及其实现方法。 ... [详细]
  • vivo发布iQOO 11系列:搭载骁龙8 Gen2与多项创新技术
    vivo正式推出iQOO 11系列智能手机,该系列搭载最新的高通骁龙8 Gen2处理器,并引入多项创新技术,致力于为用户提供卓越的性能和游戏体验。 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • 电脑蓝屏故障的成因与解决方案(下)
    本文深入探讨了导致电脑蓝屏的具体原因,并提供了相应的解决方法,帮助用户更好地理解和处理这一常见问题。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 制程能力分析:Cpk及其相关指数的深入探讨
    本文详细介绍了制程能力指数(Cpk)的概念及其与Cp、Pp、Ppk之间的关系,通过具体案例和图表展示如何评估和改进生产过程的能力。文章还提供了使用Excel和Minitab进行批量计算的实际操作步骤。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • 本实验旨在通过图灵机模型的构建与计算机硬件系统的虚拟拆装,深入理解计算机的基本原理和结构。实验内容包括图灵机各组成部分的作用、冯·诺依曼体系结构的功能描述以及微型计算机的拆装顺序记录。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ... [详细]
author-avatar
justmoon999
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有