[保护模式]段权限检查
作者:互联网
1.CPU的分级
2.如何查看程序处于几环?
CPL:当前特权级
CS和SS中存储的段选择子后两位
3.DPL:描述符的特权级别:
举例说明:MOV DS,AX
如果AX指向的段DPL = 0但当前程序的CPL =3 这行指令是不会成功执行的
4.RPL 请求特权级别
RPL是针对段选择子而言的,每个段的选择子都有自己的RPL
举例说明:
MOV AX,0008 与 MOV AX,000B //段选择子
MOV DS,AX MOV DS,AX //段描述符
指向是同一个段描述符。但RPL是不一样的。
5.数据段的权限检查
参考代码如下:
当程序处于0环,也就是CPL = 0
MOV AX,000B //1011 RPL = 3
MOV DS,AX //AX指向的段描述符的DPL = 0
数据段的权限检查:(满足条件指令才能执行成功)
CPL<=DPL 并且RPL<=DPL (数值上的比较)
注意:代码段和系统段描述符检查方式是不一样的!
6.总结:
CPL CPU当前的权限级别
DPL 如果你想访问我,你应该具备什么样的权限
RPL 用什么权限去访问一个段
为啥要有RPL?
我们本来可以用”读写“权限打开一个文件,但为了避免出错,我们只用”只读“的权限去打开!
标签:保护模式,CPL,检查,MOV,描述符,AX,权限,RPL 来源: https://www.cnblogs.com/hanhandaren/p/11200941.html