CPL,RPL,DPL区别

以下内容均为转载和整理:

1. 一致代码与非一致代码的区别
      一致代码段是内核开辟出来的供应用程序访问的段,但是不允许用户程序写入数据。
1.CPL(Current Priviliege Level):它代表了当前代码段的特权等级,由CS和SS的第0位和第1位表示。当程序转移到不同的特权等级的代码时处理器将改变CPL。在遇到一致代码段时,一致代码可以被相同或者更低特权等级(用户程序)的代码访问。当处理器访问一个与CPL特权等级不同的一致代码段时,CPL不会被改变。
2.DPL(Descriptor Priviliege Level):表示段或者门的特权等级。它存储在段或者门描述符的DPL字段中。当当前代码段试图访问一个段或者门时,DPL将会和CPL以及RPL作比较,根据段或者门类型的不同,DPL将会被区别对待:
    数据段:DPL规定了可以访问此段的最低特权等级。
    非一致代码段(不使用调用门的情况下):DPL规定了访问此段的特权级。
    调用门:与数据段一致。
    一致代码段和通过调用门访问的非一致代码段:DPL规定了访问此段的最高特权等级。
    TSS:与数据段一致。
3.RPL(Requested Priviliege Level):RPL是通过选择子的第0位和第1位来表示的。处理器通过检查RPL和CPL来确认一个访问请求是否合法。即使提出请求的段有足够的特权级,如果RPL不够也是不行的。也就是说,如果RPL的数字比CPL大,那么RPL将会起决定作用,反之亦然。
似乎下面的解释更直观一些:
 对于一致代码段:也就是共享的段.
<1>.特权级高的程序不允许访问特权级低的数据:核心态不允许调用用户态的数据.
<2>.特权级低的程序可以访问到特权级高的数据.但是特权级不会改变:用户态还是用户态.

对于普通代码段.也就是非一致代码段:
<0>.只允许同级间访问.
<1>.绝对禁止不同级访问:核心态不用用户态.用户态也不使用核心态.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值