CPL、RPL、DPL的区别
CPL(Current Privilege Level) 当前(代码)特权级。在保护模式下,CS寄存器、SS寄存器中分别存放着代码段、堆栈段的选择子。CPL在CS、SS的第0、1位(第0位到15位)中。CPL一般情下等于所装载的段的特权级。对于一致代码段来说,CPL不会随着所装载的段的特权级而改变。
DPL(Descriptor Privilege Level) 描述符特权级,在每个存储段(数据段、代码段、堆栈段)描述符、门(调用门、任务门、中断门、陷阱门)描述符、任务状态段(TSS)描述符的第5个字节(第0字节到第7字节)的第5、6位(第0位到第7位)中。DPL主要用来与CPL比较,来确定当前代码是否能够访问相应的段。
RPL(Request Privilege Level) 选择子特权级,在每个选择子的第0、1位(第0位到15位)中。RPL主要用来改写CPL,当进行段访问的时候,取CPL和RPL中数值大的一个(即取权限小的一个)。如:CPL为0,要访问的调用门DPL为2,但是选择子的RPL为3,此时不可以访问调用门。
CPL(Current Privilege Level) 当前(代码)特权级。在保护模式下,CS寄存器、SS寄存器中分别存放着代码段、堆栈段的选择子。CPL在CS、SS的第0、1位(第0位到15位)中。CPL一般情下等于所装载的段的特权级。对于一致代码段来说,CPL不会随着所装载的段的特权级而改变。
DPL(Descriptor Privilege Level) 描述符特权级,在每个存储段(数据段、代码段、堆栈段)描述符、门(调用门、任务门、中断门、陷阱门)描述符、任务状态段(TSS)描述符的第5个字节(第0字节到第7字节)的第5、6位(第0位到第7位)中。DPL主要用来与CPL比较,来确定当前代码是否能够访问相应的段。
RPL(Request Privilege Level) 选择子特权级,在每个选择子的第0、1位(第0位到15位)中。RPL主要用来改写CPL,当进行段访问的时候,取CPL和RPL中数值大的一个(即取权限小的一个)。如:CPL为0,要访问的调用门DPL为2,但是选择子的RPL为3,此时不可以访问调用门。