一致代码段是内核开辟出来的供应用程序访问的段,但是不允许用户程序写入数据。

  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. 特权级低的程序可以访问到特权级高的数据.但是特权级不会改变:用户态还是用户态.
  • 对于普通代码段.也就是非一致代码段:
    1. 只允许同级间访问.
    2. 绝对禁止不同级访问:核心态不用用户态.用户态也不使用核心态.

一致性代码段和非一致性代码段【转】相关推荐

  1. 一致代码段与非一致代码段

    首先,我们先来看几个问题: 一致代码段和非一致代码段是什么? 为什么要有一致代码段和非一致代码段? 系统提供怎样的机制来使用户程序访问内核数据? 程序如何在段与段之间跳转? 接下来,我们将讨论上述这些 ...

  2. 统一代码段与非一致代码段

    一致代码段与非一致代码段 上几篇文章,我们一直在讨论的都是 GDT 相关的一些问题,现在我们知道在系统在从实模式向保护模式跳转时,GDT 是必须要准备的结构.在介绍这一跳转之前,这篇文章我们来介绍两个 ...

  3. CPL DPL RPL的区别 一致性代码段和非一致性代码段

    概述:在谈论保护模式编程的时候,一直会有这样的困惑:为什么除了CPL和DPL还有RPL?什么时候高特权级不能访问低特权级?什么时候低特权级不能访问高特权级?一致性代码和非一致性代码有什么区别?等等这些 ...

  4. java中static代码块与非静态代码块

    static代码块与非静态代码块的区别: static代是码块是在类加载时就加载的,而非静态代码块只有在对象实例化时才执行! 转载于:https://www.cnblogs.com/dazhuzhu/ ...

  5. 静态代码块、非静态代码块、构造函数执行顺序

    静态代码块.非静态代码块.构造函数执行顺序 /*** 类的实例化顺序,静态代码块.非静态代码块.构造函数.* @author MING*/ class Person {static String na ...

  6. shaderTextView 闪动文字,static{}(静态代码块)与{}(非静态代码块)的异同点

    目录 shaderTextView  闪动文字 static{}(静态代码块)与{}(非静态代码块)的异同点 shaderTextView  闪动文字 package com.example.zhan ...

  7. java中代码块之静态代码块和非静态代码块

    一.代码块: 语法:使用{}包裹的,可以在{}中写代码. 修饰符:static 或者不修饰. static修饰的为静态代码代码块. 格式: //静态代码块,随着类的加载児执行static{System ...

  8. java 代码块:静态代码块和非静态代码块

    main方法是程序的入口,加入没有main方法程序无法启动,但是main方法不是第一个执行的. 我认为:在这个类加载时,编译器会找到main方法,从这里开始运行,但是当你把这个类加载的时候,静态代码块 ...

  9. 静态代码块、非静态代码块、构造函数三者执行顺序

    主要探讨一下关于静态代码块,非静态代码块,构造函数的执行顺序. 如有错误,欢迎指出. 首先: 静态成员变量和静态代码块的优先级是一样的,先定义的先执行. 在创建一个对象的时候会执行非静态代码块和构造函 ...

  10. 静态代码块和非静态代码块的区别

    摘自原文 小结: 1.静态代码块是在类加载时自动执行的,非静态代码块在创建对象自动执行的代码,不创建对象不执行该类的非静态代码块. 顺序: 静态代码块-->非静态代码块-->类构造方法. ...

最新文章

  1. win2003服务器通过ipsec做防火墙的配置方法
  2. excel 中的文本是ansi还是unicode_详细讲解Excel中常用的文本函数
  3. mysql创建库和表确保utf8_mysql创建utf8数据库
  4. 福大软工 · 第十二次作业 - Beta答辩总结
  5. mouseup 左键_javascript中mouseup事件丢失的原因与解决办法
  6. 如何确认访客所在的国家
  7. Tensorflow 循环神经网络03 LSTM长短时记忆神经网络
  8. JavaScript包管理器综述
  9. uni-app+flask 快速开发图像识别小程序
  10. WebStorm常用插件推荐
  11. DCMTK读取dcm文件信息环境搭建及经验总结
  12. 微信支付开通流程,及微信支付商户号申请详细流程介绍
  13. 传输层常见的协议及端口
  14. Android Studio 使用技巧
  15. python中的内置函数总结
  16. Android进程保活、拉活方案
  17. 在家干什么副业好?工作之余做什么副业比较好
  18. 谷歌插件开发ajax请求,谷歌扩展程序设置ajax请求容许跨域(极少人知道的解决方案)...
  19. docker中的volumes
  20. Chevereto图片托管php源码_Chevereto图片托管 3.10.13|图片动画|PHP源码

热门文章

  1. 【C 语言】数组 ( 多维数组操作模型 | 取某个数组元素地址 | 取某个数组元素值 )
  2. 【OpenGL】十四、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_STRIP 三角形 | GL_TRIANGLE_STRIP 三角形绘制分析 )
  3. 【数据挖掘】数据挖掘总结 ( K-Means 聚类算法 | 二维数据的 K-Means 聚类 ) ★
  4. 关于Linux服务器配置java环境遇到的问题
  5. itchat 动态注册
  6. Java 判断字符串是否为空的四种方法、优缺点与注意事项
  7. 《C程序设计语言》- 字符输入和输出
  8. PC问题-该虚拟机似乎正在使用中
  9. OS中关于父子进程的执行顺序和多个子进程之间的执行顺序(整理)
  10. Spring Boot 自动配置之条件注解