代码段和系统段描述符的权限检查方式并不一样,详见后续课程,本文只探讨数据段。
一、数据段权限检查
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> 详细描述这下面代码的执行过程: