操作系统中的特权级检查
这里涉及到的几个概念:DPL、RPL、CPL
DPL:存在于段描述符中,描述访问此段的最低特权级,即访问此段的进程CPL和RPL必须大于等于此段的DPL
RPL:存在于段选择符中的最低两位,成为请求特权级即进程的请求权限,这个可以由程序员自己设置但是其功能受到CPL的制约
CPL:存在于cs和ss寄存器中的最低两位,是当前执行程序或者任务的特权级。
![](https://images2015.cnblogs.com/blog/758933/201704/758933-20170407140553550-1521414092.png)
一个段描述符的DPL为0表示只允许内核层的进程访问,为3表示允许任意进程访问。
在实模式下,由于段寄存器是16位的,地址线有20根,当时的寻址是通过段寄存器中的值左移4位然后加上一个16位的地址值
而在保护模式下,32根地址线,段选择符中的作用就是使用其高13位作为段索引,指向GDT或者LDT中的某一项,第三位就表示在GDT还是在LDT。
而GDT和LDT的基址都有专门的寄存器保存。