博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
保护模式下的特权级转换总结
阅读量:6036 次
发布时间:2019-06-20

本文共 874 字,大约阅读时间需要 2 分钟。

1 首先要说明的是 “一致代码段和非一致代码段” 的概念。

“一致”的意思是这样的:

  • 当转移的目标是一个特权级更高的一致代码段(CPL<=DPL,RPL<=DPL(级别的高低,不是数字的大小)),当前的特权级会被延续下去,CPL不变。
  • 而向特权级更高的非一致代码段的转移会引起常规保护错误。

说明:

  • 代码段是否为一致代码段的属性是在规定GDT表的Descriptor的属性选项规定的。
  • 数据段都是非一致的。

利用call和jmp总结:

  • 向非一致代码段访问,只能访问同一特权级别的,要真想访问其他级别的,使用调用门和retd。
  • 向一致代码段访问,只能Low->High  or Same Privilege,High->Low是引起常规保护错误的。
  • 向数据段访问,High->Low or Same Privilege,Low->High是引起常规保护错误。

 

2 DPL表示或者门的特权级,被存储在段描述符或者门描述符的DPL字段中。

数据段、调用门、TSS

  DPL规定了可以访问此段的最低特权级。即特权级>=DPL才能访问成功。

通过调用门访问的非一致代码段

  DPL规定了可以访问此段的最高特权级。即特权级<=DPL才能访问成功。

  • 解释:比如想通过调用门从低级别向高级别访问,不妨设低级别为代码A,高级别为代码B,调用门G。会有2次特权级的判定,先是特权级>=DPL_G.然后如果第一条成立,说明刚刚能接触调用门,至于调转成功否还未知。还要DPL_B>=特权级,才能够实现跳转的成功。

 

3 CPL(Current Privilege Level)是当前执行的程序或任务的特权级。它被存储在cs和ss的第0位和第1位上。个人认为可以看成是段描述符未加载入CS前,该段的DPL,加载入CS后就存入CS的低两位,所以叫做CPL,其值就等于原段DPL的值。特例一致代码段访问除外

4 RPL(Requested Privilege Level)是存储在段选择子的第0位和第1位中的。

段2中红字标出的特权级意思是:min(CPL, RPL).

 

 

 

 

转载地址:http://teohx.baihongyu.com/

你可能感兴趣的文章
从Lync2010看微软UC发展
查看>>
关于dns使用协议的探究
查看>>
JAVA实现拼图游戏
查看>>
AWS - 手动创建VPC 公网,子网和NAT实例
查看>>
ITIL V3 Foundation考试通过心得
查看>>
Linux as 5 下部署oracle 10.2.0.1(3)
查看>>
团队项目个人进展——Day02
查看>>
云场景实践研究第24期:巧思科技
查看>>
Puppet自动化运维排错案例
查看>>
从玩具到游戏,另类的项目激励机制
查看>>
远程桌面服务没有正常退出导致的问题
查看>>
mysql数据库主从正常切换IP脚本
查看>>
31天速成重构
查看>>
Pandas duplicated and drop_duplicates:查找并去除重复项
查看>>
Ransac 与 最小二乘(LS, Least Squares)拟合直线的效果比较
查看>>
如何使用Proxy模式及Java内建的动态代理机制
查看>>
综合应用WPF/WCF/WF/LINQ之四十:实现一个简单的DataGrid之CheckBox已勾选的项的保存...
查看>>
federated存储引擎实现跨服务器的数据访问
查看>>
《从零开始学Swift》学习笔记(Day60)——Core Foundation框架
查看>>
Java设计模式圣经连载(01)-简单工厂模式
查看>>