一致性代码段和非一致性代码段
来源:互联网 发布:net和java有什么区别 编辑:程序博客网 时间:2024/05/21 08:23
“一致”的意思是这样的,当转移的目标是一个特权级更高(PDL < CPL)的一致代码段,当前的特权级(CPL)会被延续下去,而向特权级更高的非一致代码段的转移会引起常规保护错误。
比如当前程序的特权级(CPL)是3,有一个描述符的特权级(DPL)是0,现在向该描述符转移:
若该描述符是一致代码段,能正常转移,但当前程序的特权级(CPL)仍然是3;
若该描述符是非一致代码段,违约,触发常规保护错误。
所谓的一致和非一致代码段,简单的可以用是否共享的段来区分,如果共享(系统内核共享的段)就是一致段,不共享的就是非一致段!至少我现在这么理解的!
对于非一致代码段,只允许同特权级的转移
原因:
1.低特权级下不能调用高特权级的代码,即保护高特权级的代码
2.高特权级下不能调用低特权级的代码,为了避免低特权级代码获得高特权级从而能执行某些系统指令
其实我也觉得很混乱,现在是这样总结的:
1.
一致代码段的转移,转移后的CPL不变
对于非一致代码段的转移与通过调用门转移,转移后的CPL就是段的DPL
2.
而给其他段寄存器赋值(除CS以外)时,赋值后该寄存器的RPL就是选择子的RPL
原因:
1.低特权级下不能调用高特权级的代码,即保护高特权级的代码
2.高特权级下不能调用低特权级的代码,为了避免低特权级代码获得高特权级从而能执行某些系统指令
其实我也觉得很混乱,现在是这样总结的:
1.
一致代码段的转移,转移后的CPL不变
对于非一致代码段的转移与通过调用门转移,转移后的CPL就是段的DPL
2.
而给其他段寄存器赋值(除CS以外)时,赋值后该寄存器的RPL就是选择子的RPL
对于普通代码段.也就是非一致代码段:
0.只允许同级间访问.
1.绝对禁止不同级访问:核心态不用用户态.用户态也不使用核心态.
总结:似乎这些东西跟我们初学者预想的那样不同.核心态是老大.想用访问谁都可以.其实错了.结果恰恰相反.
这是因为防止用户篡改核心态的数据.导致核心态执行用户代码.而造成内核崩溃.
- 一致性代码段和非一致性代码段
- 一致性代码段和非一致性代码段
- 一致性代码段和非一致性代码段
- 一致性代码段和非一致性代码段
- 一致性代码段和非一致性代码段
- 一致性代码段和非一致性代码段
- 一致性代码段和非一致性代码段【转】
- 一致性代码段和非一致性代码段
- 一致和非一致性代码段
- 一致性/非一致性代码段的总结
- CPL DPL RPL的区别 &&一致性代码段和非一致性代码段
- CPL DPL RPL的区别 &&一致性代码段和非一致性代码段
- CPL DPL RPL的区别 &&一致性代码段和非一致性代码段
- 一致与非一致性代码段
- 一致与非一致性代码段
- 一致与非一致性代码段
- RPL DPL CPL 与一致性 非一致性代码段
- 保护模式下,什么是一致性代码和非一致性代码段
- 多队列网卡简介
- float数据 与 double数据相乘时,结果转成int时会出现错误
- 内核与驱动移植记录
- 吐槽一下原来的公司
- Android实现单线程异步多文件下载的代码
- 一致性代码段和非一致性代码段
- INPUT驱动
- 架构师的大局观
- 有关nginx rewrite模块的问号
- 如何更改Linux(Ubuntu)语言和编码设置
- http-关于application/x-www-form-urlencoded等字符编码的解释说明
- 【模式识别与机器学习】贝叶斯公式
- MediaPlayer设置StreamType需要在prepare之前
- 我的 PHP 工具类库