“一致代码段”和“非一致代码段”解惑!

        自己在学习的过程中,发现对“一致”和“非一致”代码段的定义不是太清晰,所以在网上荡了一圈,总结一下加深印象!呵呵

      1. 所谓的“一致代码段”,目的是为了共享,比如说该一致代码段的特权级是2,那么即使是特权级是3的代码,也可以访问该一致代码。也就是允许低权限的代码访问高权限的代码,而成功访问之后,当前的特权级并不是目标代码的特权级,而是原来代码的特权级。也就是说,跳转之后,CPL不变。要注意的是,一致代码段的DPL的定义,它定义的是允许访问改一致代码段的最高权限,也就是说,如果一个权限比一致代码段中DPL的权限还要高的话,是不允许访问该一致代码段的。

      2. 对于非一致代码段,只允许同特权级的转移 。

有以下原因:
       (1)低特权级下不能调用高特权级的代码,即保护高特权级的代码 。
       (2)高特权级下不能调用低特权级的代码,为了避免低特权级代码获得高特权级从而能执行某些系统指令。

也就是说:
若转移的目标是一致代码段,只要CPL> =DPL就能转移,且CPL保持不变,即以原来的特权级去访问高特权级的代码,这就是“一致”。

若转移的目标是非一致代码段,只有CPL=DPL才允许转移。


总结:一致代码段的DPL规定了成功访问它的最高权限,高于这个权限的代码不能成功访问它。成功访问一致代码段后,CPL并不会改变,还是保持为原来的权限。这样的设置主要是为了共享,比如一些函数库之类的,而不用受到权限的限制。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值