代码段和系统段描述符的权限检查方式并不一样,详见后续课程,本文只探讨数据段。

一、数据段权限检查

DPL是段的权限属性,要想访问一个数据段,段选择子和CPU当前权限必须高于DPL。要注意,权限数值越低,权限越高,比如我们常说的0环,就是权限最高的。

RPL:段选择子的权限
DPL:段的权限
CPL:CPU权限

综上所述,数据段权限检查遵循以下规则:
CPL <= DPL 并且 RPL <= DPL (数值上的比较)
只有满足上述条件,才能成功访问数据段。
总结:
CPL CPU当前的权限级别
DPL 如果你想访问我,你应该具备什么样的权限
RPL 用什么权限去访问一个段

二、练习

<1> 在3环能加载的数据段有哪些?
3环CPL=3,只能加载DPL=3的数据段。

<2> 在0环能加载的数据段有哪些?
0环CPL=0,满足RPL<=DPL的数据段都可以加载。

<3> 详细描述这下面代码的执行过程:
mov ax,0x23
mov ds,ax

段选择子是0x0023,RPL=11b=3,属于最低权限,只能访问DPL=3的数据段。而CPL则无影响,不管是0环还是3环,都满足CPL<=RPL,只要RPL满足,CPL也一定满足。

当执行 mov ds,ax 时,CPU先解析段选择子0023,然后去GDT表找段描述符,检查段描述符P位是否有效,然后检查S位,确认是数据段或代码段,然后检查TYPE域确认是数据段,然后看DPL是否等于3.只要上述条件都满足,则mov指令执行成功,只要有一条不满足,mov失败。

(7)数据段权限检查相关推荐

  1. 2020-11-24(Windows保护模式学习笔记(1)—— 段寄存器与段权限检查)

    X86 CPU的三个模式:实模式.保护模式和虚拟8086模式 0x01 段寄存器 通常情况下,我们认为有8个段寄存器,他们分别是 ES CS SS DS FS GS LDTR TR 其中,后四个寄存器 ...

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

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

  3. 访问数据段时的特权级检查,修改SS时的特权级检查——《x86汇编语言:从实模式到保护模式》读书笔记30

    1. 访问数据段时的特权级检查 为了访问数据段,数据段的选择子必须被加载进段寄存器(ES,ES,FS,GS,SS).在把一个段选择子加载进段寄存器之前,处理器会进行特权级检查(如下图所示). 在数值上 ...

  4. Android P SELinux (三) 权限检查原理与调试

    Android P SELinux (一) 基础概念 Android P SELinux (二) 开机初始化与策略文件编译过程 Android P SELinux (三) 权限检查原理与调试 Andr ...

  5. 特权级转移 之 保护模式下数据段特权级保护依据

    提炼: 1 对于数据段 ,处理器进行特权级检查的时机 就是为段寄存器赋值的那一个时刻 在保护模式下 当处理器对段寄存器进行赋值的时候,处理器就会使用规则进行特权级的检查.如: mov ax, Data ...

  6. 内存空间分几部分:代码段、数据段,栈,堆 (收集整理)

    1.函数代码存放在代码段.声明的类如果从未使用,则在编译时,会优化掉,其成员函数不占代码段空间. 全局变量或静态变量,放在数据段, 局部变量放在栈中, 用new产生的对象放在堆中, 内存分为4段,栈区 ...

  7. 往hdfs写数据无权限

    调用jar包把风电数据往hdfs写数据无权限问题 错误信息:hadoop.security.AccessControlException:Permission denied:user=gcl,acce ...

  8. 实例:ABAP权限对象设计与权限检查的实现

    Ps:发觉现在的CSDN越来越烂了,编辑超级不人性化,一按退格就退出编辑,而且敏感词直接封号,吐槽一下,开始正文. 在测试机里面创建一张新表ZEMP_DEP,并插入一点记录. 插入几条记录: 创建权限 ...

  9. 数据段描述符和代码段描述符(一)——《x86汇编语言:从实模式到保护模式》读书笔记10

    一.段描述符的分类 在上一篇博文中已经说过,为了使用段,我们必须要创建段描述符.80X86中有各种各样的段描述符,下图展示了它们的分类. 看了上图,你也许会说:天啊,怎么这么多段描述符啊!我可怎么记住 ...

最新文章

  1. GPT3后可考虑的方向-知识推理与决策任务及多模态的信息处理
  2. 三周写出高性能的Python代码,这些小技巧你值得一试。
  3. javaScript事件(二)事件处理程序
  4. jvm 9种垃圾收集器
  5. Uni-Java_Java全栈必备之Uni-App
  6. 下面介绍一个开源的OCR引擎Tesseract2。值得庆幸的是虽然是开源的但是它的识别率较高,并不比其他引擎差劲。网上介绍Tessnet2也是当时时间排名第三的识别引擎,只是后来慢慢不维护了,目前是G
  7. Verilog HDL语言设计4个独立的非门
  8. [设计模式] ------ 单例模式
  9. MyBatis-Plus_Condition作用
  10. RK4程序c语言,matlab实现欧拉法和RK-4方法的数值计算
  11. linux同内核覆盖,Linux内核代码覆盖率 – GCOV
  12. Ubuntu 16.04安装SoapUI工具进行接口测试(Web Service/WSDL/RESTfull)
  13. 金蝶如何修改服务器IP,金蝶服务器ip地址修改
  14. Linux 在线词典
  15. 想要挣钱创收 那就用脚本操作手机群控软件啊
  16. 023_fireshot
  17. 所有小米机型 解BT+刷Magisk并ROOT+躲避应用ROOT环境检查教程
  18. MySQL的数据操作
  19. 随便学学Python-day7-字典和集合
  20. 【牛客专项练习】计算机基础—网络基础

热门文章

  1. DL之SSD:基于tensorflow利用SSD算法实现目标检测(21类)
  2. ML之ME/LF:机器学习中常见模型评估指标/损失函数(LiR损失、L1损失、L2损失、Logistic损失)求梯度/求导、案例应用之详细攻略
  3. Interview:互联网IT界技能进阶必备—各个职位推荐几个高含金量的证书
  4. session may be lost when use window.open to open a new window
  5. 【转】Linux Netfilter实现机制和扩展技术
  6. VCL界面控件DevExpress VCL Controls发布v18.2.5|附下载
  7. 那些永不消逝的进程 (转)
  8. 安装python sklearn经验总结
  9. python爬虫学习(一)
  10. ES6入门之对象扩展