Intel的CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3。Windows只使用其中的两个级别RING0和RING3,RING0只给操作系统用,RING3谁都能用。如果普通应用程序企图执行RING0指令,则Windows会显示“非法指令”错误信息。

ring0是指CPU的运行级别,ring0是最高级别,ring1次之,ring2更次之……  拿Linux+x86来说,  操作系统(内核)的代码运行在最高运行级别ring0上,可以使用特权指令,控制中断、修改页表、访问设备等等。  应用程序的代码运行在最低运行级别上ring3上,不能做受控操作。如果要做,比如要访问磁盘,写文件,那就要通过执行系统调用(函数),执行系统调用的时候,CPU的运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问,完成之后再从ring0返回ring3。这个过程也称作用户态和内核态的切换。

RING设计的初衷是将系统权限与程序分离出来,使之能够让OS更好的管理当前系统资源,也使得系统更加稳定。举个RING权限的最简单的例子:一个停止响应的应用程式,它运行在比RING0更低的指令环上,你不必大费周章的想着如何使系统回复运作,这期间,只需要启动任务管理器便能轻松终止它,因为它运行在比程式更低的RING0指令环中,拥有更高的权限,可以直接影响到RING0以上运行的程序,当然有利就有弊,RING保证了系统稳定运行的同时,也产生了一些十分麻烦的问题。比如一些OS虚拟化技术,在处理RING指令环时便遇到了麻烦,系统是运行在RING0指令环上的,但是虚拟的OS毕竟也是一个系统,也需要与系统相匹配的权限。而RING0不允许出现多个OS同时运行在上面,最早的解决办法便是使用虚拟机,把OS当成一个程序来运行。

CPU 的 ring0,ring1,ring2,ring3相关推荐

  1. CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3是什么呢?

    百度百科:ring0以及其他 ring:包围; 环绕; 通俗讲就是一圈一圈的,离得近的标号为:0.其次为,1.以此类推. Windows 的内存可以被分为两个层面:物理内存和虚拟内存. 其中,物理内存 ...

  2. CPU 的 ring0、ring1、ring2、ring3

    Intel 的 CPU 将特权级别分为 4 个级别:RING0.RING1.RING2.RING3.Windows 只使用其中的两个级别 RING0 和 RING3,RING0 只给操作系统用,RIN ...

  3. 全虚拟化和半虚拟化的区别 cpu的ring0~ring3又是什么概念?

    ring0是指CPU的运行级别,ring0是最高级别,ring1次之,ring2更次之-- 拿Linux+x86来说, 操作系统(内核)的代码运行在最高运行级别ring0上,可以使用特权指令,控制中断 ...

  4. 初步探索CPU特权级别

    0 引言 本文是在linux系统编程中所沉淀.主要从代码层面出发,直觉感受CPU特权级别的作用,然后初步讲解CPU特权级别的概念. 1 反汇编代码 本部分从两个代码示例出发. 反汇编代码访问RAX寄存 ...

  5. Linux 操作系统原理 — 内核态与用户态

    目录 文章目录 目录 Linux 的内核态与用户态 系统调用(System Call) Shell 用户态和内核态的切换 进程的用户空间和内核空间的内存布局 内核空间 用户空间 Linux 的内核态与 ...

  6. 基于 Bochs 的操作系统内核实现

    简介 Bochs 简介 Bochs(读音Box)是一个开源的模拟器(Emulator),它可以完全模拟x86/x64的硬件以及一些外围设备.与VirtualBox / VMware等虚拟机(Virtu ...

  7. (Mark)操作系统原理

    Q:什么是中断? A:中断嘛,举个容易理解的例子吧.    比如莲莲和唐唐在下象棋,眼看莲莲就快招架不住了,正当此紧要关头,唐 唐的女友来了,非要唐唐陪她上街买衣服不可(唐唐晕倒:-) ),于是唐唐 ...

  8. [并发编程] - 操作系统底层工作原理

    文章目录 冯诺依曼计算机模型 CPU内部结构 控制单元 运算单元 存储单元 CPU缓存结构 CPU读取存储器数据过程 CPU为何要有高速缓存 带有高速缓存的CPU执行计算的流程 CPU运行安全等级 操 ...

  9. 【安全技术】关于几种dll注入方式的学习

    何为dll注入 DLL注入技术,一般来讲是向一个正在运行的进程插入/注入代码的过程.我们注入的代码以动态链接库(DLL)的形式存在.DLL文件在运行时将按需加载(类似于UNIX系统中的共享库(shar ...

  10. [内核编程] 内核环境及其特殊性,驱动编程基础篇

    [内核编程] 内核环境及其特殊性,驱动编程基础篇  在学习汉江独钓一书后,打算总结一下内核编程应该注意的事项,以及有关的一些基础知识.第一次接触内核编程,还真是很生疏,很多东西不能一下马上消化.这里做 ...

最新文章

  1. python中简述对象和类的关系_Python学习笔记(七)对象和类
  2. 使用Anaconda完全替代官方Python
  3. 百度统计 java 实现思路_搞定BAT之百度面经深度整理
  4. 超越GPT-3!NormFormer:归一化提高预训练、缓解梯度不匹配
  5. python字典的用法_Python字典的用法详解(附示例)
  6. WPF学习笔记 - 不一样的皇帝的新衣
  7. mysql一些常用操作_表的一些常用操作_MySQL
  8. Keil(MDK-ARM-STM32)系列教程(八)在线调试(Ⅰ)
  9. 小程序:版本更新后获取用户信息变更
  10. 【机器学习】径向基(RBF)神经网络的tensorflow实现
  11. 乐高创意机器人moc_乐高MOC佳作欣赏丨机械之美机器人乐高作品集15
  12. Java自学教程汇总
  13. Proxmark3系列教程1——PM3用法
  14. 手动更新google服务框架
  15. CentOS安装gotop
  16. unity android光照贴图格式,Unity3D-光照贴图技术
  17. 运维是技术含量最低的岗位吗?自学应该看书还是看视频?答案都在这里!
  18. java xmpp协议_GitHub - zhengzhi530/xmpp: 基于Xmpp协议的即时通讯社交软件(客户端+服务端)...
  19. abuse file struct 阅读记录
  20. 非对称加密 公钥解密_了解非对称公钥加密

热门文章

  1. Spring框架学习第二部分
  2. 怎样将linux系统打包成iso文件,封装linux系统成iso文件
  3. 聊聊那些计量软件(区别、流行度 R Matlab SPSS SAS STATA)
  4. 基于百度翻译api的命令行翻译助手
  5. Android开发之各种好看的背景颜色
  6. Baby-step giant-step算法
  7. 企业微信和个人微信的区别
  8. AMD处理器的发展历程
  9. 机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了
  10. 终于把所有的 Python 库都整理出来啦