一致性代码段和非一致性代码段【转】
一致代码段是内核开辟出来的供应用程序访问的段,但是不允许用户程序写入数据。
- CPL(Current Priviliege Level):它代表了当前代码段的特权等级,由CS和SS的第0位和第1位表示。当程序转移到不同的特权等级的代码时处理器将改变CPL。在遇到一致代 码段时,一致代码可以被相同或者更低特权等级(用户程序)的代码访问。当处理器访问一个与CPL特权等级不同的一致代码段时,CPL不会被改变。
- DPL(Descriptor Priviliege Level):表示段或者门的特权等级。它存储在段或者门描述符的DPL字段中。当当前代码段试图访问一个段或者门时,DPL将会和CPL以及RPL作比 较,根据段或者门类型的不同,DPL将会被区别对待: 数据段:DPL规定了可以访问此段的最低特权等级。 非一致代码段(不使用调用门的情况下):DPL规定了访问此段的特权级。 调用门:与数据段一致。 一致代码段和通过调用门访问的非一致代码段:DPL规定了访问此段的最高特权等级。 TSS:与数据段一致。
- RPL(Requested Priviliege Level):RPL是通过选择子的第0位和第1位来表示的。处理器通过检查RPL和CPL来确认一个访问请求是否合法。即使提出请求的段有足够的特权级,如果RPL不够也是不行的。也就是说,如果RPL的数字比CPL大,那么RPL将会起决定作用,反之亦然。
似乎下面的解释更直观一些:
对于一致代码段:也就是共享的段.
- 特权级高的程序不允许访问特权级低的数据:核心态不允许调用用户态的数据.
- 特权级低的程序可以访问到特权级高的数据.但是特权级不会改变:用户态还是用户态.
- 对于普通代码段.也就是非一致代码段:
- 只允许同级间访问.
- 绝对禁止不同级访问:核心态不用用户态.用户态也不使用核心态.
一致性代码段和非一致性代码段【转】相关推荐
- 一致代码段与非一致代码段
首先,我们先来看几个问题: 一致代码段和非一致代码段是什么? 为什么要有一致代码段和非一致代码段? 系统提供怎样的机制来使用户程序访问内核数据? 程序如何在段与段之间跳转? 接下来,我们将讨论上述这些 ...
- 统一代码段与非一致代码段
一致代码段与非一致代码段 上几篇文章,我们一直在讨论的都是 GDT 相关的一些问题,现在我们知道在系统在从实模式向保护模式跳转时,GDT 是必须要准备的结构.在介绍这一跳转之前,这篇文章我们来介绍两个 ...
- CPL DPL RPL的区别 一致性代码段和非一致性代码段
概述:在谈论保护模式编程的时候,一直会有这样的困惑:为什么除了CPL和DPL还有RPL?什么时候高特权级不能访问低特权级?什么时候低特权级不能访问高特权级?一致性代码和非一致性代码有什么区别?等等这些 ...
- java中static代码块与非静态代码块
static代码块与非静态代码块的区别: static代是码块是在类加载时就加载的,而非静态代码块只有在对象实例化时才执行! 转载于:https://www.cnblogs.com/dazhuzhu/ ...
- 静态代码块、非静态代码块、构造函数执行顺序
静态代码块.非静态代码块.构造函数执行顺序 /*** 类的实例化顺序,静态代码块.非静态代码块.构造函数.* @author MING*/ class Person {static String na ...
- shaderTextView 闪动文字,static{}(静态代码块)与{}(非静态代码块)的异同点
目录 shaderTextView 闪动文字 static{}(静态代码块)与{}(非静态代码块)的异同点 shaderTextView 闪动文字 package com.example.zhan ...
- java中代码块之静态代码块和非静态代码块
一.代码块: 语法:使用{}包裹的,可以在{}中写代码. 修饰符:static 或者不修饰. static修饰的为静态代码代码块. 格式: //静态代码块,随着类的加载児执行static{System ...
- java 代码块:静态代码块和非静态代码块
main方法是程序的入口,加入没有main方法程序无法启动,但是main方法不是第一个执行的. 我认为:在这个类加载时,编译器会找到main方法,从这里开始运行,但是当你把这个类加载的时候,静态代码块 ...
- 静态代码块、非静态代码块、构造函数三者执行顺序
主要探讨一下关于静态代码块,非静态代码块,构造函数的执行顺序. 如有错误,欢迎指出. 首先: 静态成员变量和静态代码块的优先级是一样的,先定义的先执行. 在创建一个对象的时候会执行非静态代码块和构造函 ...
- 静态代码块和非静态代码块的区别
摘自原文 小结: 1.静态代码块是在类加载时自动执行的,非静态代码块在创建对象自动执行的代码,不创建对象不执行该类的非静态代码块. 顺序: 静态代码块-->非静态代码块-->类构造方法. ...
最新文章
- win2003服务器通过ipsec做防火墙的配置方法
- excel 中的文本是ansi还是unicode_详细讲解Excel中常用的文本函数
- mysql创建库和表确保utf8_mysql创建utf8数据库
- 福大软工 · 第十二次作业 - Beta答辩总结
- mouseup 左键_javascript中mouseup事件丢失的原因与解决办法
- 如何确认访客所在的国家
- Tensorflow 循环神经网络03 LSTM长短时记忆神经网络
- JavaScript包管理器综述
- uni-app+flask 快速开发图像识别小程序
- WebStorm常用插件推荐
- DCMTK读取dcm文件信息环境搭建及经验总结
- 微信支付开通流程,及微信支付商户号申请详细流程介绍
- 传输层常见的协议及端口
- Android Studio 使用技巧
- python中的内置函数总结
- Android进程保活、拉活方案
- 在家干什么副业好?工作之余做什么副业比较好
- 谷歌插件开发ajax请求,谷歌扩展程序设置ajax请求容许跨域(极少人知道的解决方案)...
- docker中的volumes
- Chevereto图片托管php源码_Chevereto图片托管 3.10.13|图片动画|PHP源码
热门文章
- 【C 语言】数组 ( 多维数组操作模型 | 取某个数组元素地址 | 取某个数组元素值 )
- 【OpenGL】十四、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_STRIP 三角形 | GL_TRIANGLE_STRIP 三角形绘制分析 )
- 【数据挖掘】数据挖掘总结 ( K-Means 聚类算法 | 二维数据的 K-Means 聚类 ) ★
- 关于Linux服务器配置java环境遇到的问题
- itchat 动态注册
- Java 判断字符串是否为空的四种方法、优缺点与注意事项
- 《C程序设计语言》- 字符输入和输出
- PC问题-该虚拟机似乎正在使用中
- OS中关于父子进程的执行顺序和多个子进程之间的执行顺序(整理)
- Spring Boot 自动配置之条件注解