(注意,特权级数值越大,级别越小。文中描述级别用高低,描述数值用大小)CPL防火门CPL防火门是当前进程的权限级别(Current Privilege Level),是当前正在执行的代码所在的段的特权级,存在于cs寄存器的低两位。也就是说,CPL防火门标识了代码能够达到的高的特权级别。RPLRPL说明的是进程对段访问的请求权限(Request Privilege Level),是对于段选择子而言的,每个段选择子有自己的RPL,
它说明的是进程对段访问的请求权限。RPL是段选择子(SS, Segment Selector)里面的bit 0和bit 1位组合所得的值。段选择子是一个identifier,用于在GDT或者LDT中索引段描述符,结构如下:简单来讲,代码去访问某个段时,OS为其构造一个段选择子,并根据这个段选择子去段描述符表中索引描述符。因此,RPL对每个段来说不是固定的,两次访问同一段的RPL可以不同。RPL可能会削弱CPL防火门的作用,例如当前CPL防火门=0的进程要访问一个数据段,它把段选择符中的RPL设为3,这样虽然它对该段仍然只有特权为3的访问权限。DPLDPL存储在段描述符中,规定访问该段的权限级别(Descriptor Privilege Level),每个段的DPL固定。当进程访问一个段时,需要进程特权级检查,一般要求DPL >= max {CPL防火门, RPL},即级别至少要相同才能通过检查。


