CPL,DPL,RPL 特权级检查

1、CPL,DPL,RPL都位于哪里?
RPL:Request Privilege Level,请求特权级,位于段寄存器后两位
DPL:Descriptor Privilege Level,描述特权级,位于GDT/IDT中
CPL: Current Privilege Level,当前特权级,CS.RPL

2、CPL,DPL,RPL的意义?
CPL:表示处理器的当前特权级
DPL:表示受访者特权等级,可看成是访问门槛
RPL:其意义在于特权级检查,保护系统安全

CPL与DPL先PK决定处理器是否有访问数据/代码的权限,
写数据前RPL参与检查,避免对系统造成破坏。

3、CPL与DPL的PK:
按照我的理解,CPL和DPL的PK决定了用户程序是否具有访问权限
(1)对于受访者为代码段来说要求CPL==DPL,只能平级访问,如果CPL>DPL,则需要借助门结构提升处理器特权级。
(2)对于受访者为数据段而言,要求CPL<=DPL,即处理器特权级必须大于等于数据段特权级。

4、RPL?
如果一个用户程序需要获取当前内存容量大小,内存容量大小存储在内核数据段中,DPL为0,处理器需要提升特权级才能读取存放在自己的段中,因此需要提供一个数据段选择子作为调用内核例程的参数。
接下来,用户程序借助门结构进入0特权级,必须满足CPL<=DPL&&RPL<=DPL的条件,才能将内核数据写入到用户提供的缓冲区。
CPL<=DPL :对于数据段,需满足CPL权限大于等于DPL
RPL<=DPL :
RPL是用户提供的选择子,首先会被压入3特权级下的栈中,随后被复制到0特权级下的栈中,随着一起复制过去的,还有原先的CS和EIP,接下来为了防止用户程序作弊,操作系统会将用户提供的RPL修改为原先CS中的后两位,这就保证了提供的RPL与原先的CPL一致,避免可能将内核数据覆盖的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值