CPL
CPL(current Privilege Level)是当前执行的程序或任务的特权级。它被存储在CS和SS的第0位和第一位上,通常情况下,CPL等于代码所在的段的特权级。当程序转移到不同特权级的代码段时,处理器将改变CPL。
DPL(Descriptor Privilege Level)
DPL表示段或者门的特权级。它被保存在段描述符或者门描述符的DPL字段中,正如我们先前所看到的那样。当当前代码段试图访问一个段或者门时,DPL将会和CPL以及段或门选择子的RPL相比较,根据段或者门类型的不同,DPL将会被区别对待,下面介绍一下各种类型的段或者门的情况:
数据段:
DPL规定了可以访问此段的最低特权级。
非一致代码段:DPL规定访问此段的特权级。
调用门:DPL规定了当前执行的程序或任务可以访问此调用门的最低特权级。
一致代码段和通过调用门访问的非一致代码段:DPL规定了访问此段的最高特权级。
TSS:DPL规定了可以访问此TSS的最低特权级。
RPL(requested Privilege Level)
RPL是通过段选择子的第0位和第一位表现出来的。处理器通过检查RPL和CPL来确认一个访问请求是否合法。即便提出访问请求的段有足够的特权级,如果RPL不够也是不行的。也就是说,如果RPL的数字比CPL大,哪么RPL将会起决定性作用。