控制转移(二)

来源:互联网 发布:java http 发送文件 编辑:程序博客网 时间:2024/05/19 03:18

      特权级转移这块一直觉得很混乱,理不出头绪,现在终于发现问题在哪了:不要将特权级和代码段、数据段、堆栈段搅在一块。代码段、数据段、堆栈段他们各自有自己的特权级处理规则。在学习的过程中还要有意识的提醒自己这种规则是哪种类型段的规则。三种类型的段相互配合才能组成一段可以运行的程序。既然三种类型之间的段有联系,三种类型段的特权级处理方式也会有自己的联系和区别。在学习中有意识的提醒自己正在阅读的规则是属于哪种类型的段的,就能很好的理解他们之间的联系和区别,从而使学习事半功倍。

      这里很多名称都很相似,很多都只一地之差,所指代的涵义相近又有区别,正确严谨的理解、并防止相互混淆这些名词很关键。

 

装载数据段寄存器时的特权检测

      在把选择子装入数据段寄存器DS、ES、FS、GS时,要进行检测:

      1、选择自不能为空

      2、选择子指定的描述符必须是数据段描述符、可读可执行的代码段或一致的可读可执行代码段

      3、对于数据段和可读可执行代码段,要求CPL<=DPL ,RPL<=DPL(即高特权级访问低特权级)

      4、对应段必须存在

 

 

装载堆栈段寄存器时的特权级检测

      1、选择子不能为空

      2、选择子指定的描述符必须是可读可写数据段描述符

      3、要求CPL=RPL=CPL

      4、对应段必须存在

原创粉丝点击