zoukankan      html  css  js  c++  java
  • 9.[保护模式]代码的跨段跳转流程

      

    IRETD 图上错了

    段描述符如果是数据段是不允许跳转的!

    4.权限检查:

        如果非一致代码段,要求CPL == DPL 并且 RPL<=DPL (应用层不能直接访问的)

        如果是一致代码段,要求 :CPL >=DPL;(电脑内核提供可以直接有3环访问的(共享段))

    5.加载段描述符

        通过上面的检查权限后,CPU会将段描述符加载到CS段寄存器中

    6.执行代码:

        CPU将CS.base +Offset 的值写入EIP  然后执行CS:EIP处代码,段间跳转结束

    7.总结:

      对于一致代码段:也就是共享的段

          特权级别高的程序不允许访问特权级别低的数据:核心态不允许访问用户态的数据;

          特权级别低程序可以访问特权级别高的数据,但特权级不会改变(用户态还是用户态);

      对于普通代码段(非一致代码段)

          只允许同级访问;

          绝对禁止不同级别的访问:核心态不能访问用户态,用户态不能访问核心态;

    直接对代码段进行JMP 或者CALL 的操作,无论目标是一致代码段还是非一致代码段,CPL都不会发生改变,如果要提升CPL的权限,只能通过调用门

  • 相关阅读:
    TensorRT推理加速基于Tensorflow(keras)的uff格式模型(文件准备)
    pandas_format06
    docker01
    pandas_dataformat03
    pandas_dataformat02
    pandas_series04
    pandas_format05
    pandas_format04
    pandas_dataframe01
    pandas_series03
  • 原文地址:https://www.cnblogs.com/hanhandaren/p/11201216.html
Copyright © 2011-2022 走看看