请求特权级RPL有关概念理解
注:《x86汇编语言-从实模式到保护模式》(李忠等著),以下简称《从实模式到保护模式》
几个概念:
1、RPL:RPL的意思是请求特权级(Request Privilege Level)。不管是实施控制转移,还是访问数据段,这都可以看成是一个请求,请求者提供一个段选择子,请求访问指定的段。从这个意义上来说,RPL也就是指请求者的特权级别。【《从实模式到保护模式》P253】
2、引入RPL的原因是处理器在遇到一条将选择子传送到段寄存器的指令时,无法区分真正的请求者是谁。但是,引入RPL本山并不能完全解决这个问题,这只是处理器和操作系统之间的一种协议,处理器负责检查请求特权级RPL,判断它是否有权访问,但前提是提供了正确的RPL;内核或者操作系统负责鉴别请求者的身份,并有义务保证RPL的值和它的请求者身份相同[1],因为这是处理器无能为力的。【《从实模式到保护模式》P255】
上段中“……内核或者操作系统负责鉴别请求者的身份,并有义务保证RPL的值和它的请求者身份相同[1],……。”关于这句话的理解,我的理解如下,不知道是否正确,向各位请教:
当前指令发起的请求的请求特权级RPL必须与其当前特权级CPL相等(或者低于CPL,也就是在数值上,必须RPL≥CPL)。
例如,如果当前指令的CPL为3,那么,由它发起的,任何诸如控制转移或者访问数据段之类的请求的请求特权级RPL也必须是3?是否同时也意味着,当前指令中提供的选择子中的RPL肯定也必须是3?
如果当前指令的CPL为2呢?此时,指令提供的选择子中的RPL是必须为2?还是2或者3都可以呢?