当前位置: 首页 > article >正文

【Linux系统】CPU指令集 和 Linux系统权限 ring 0 / ring 3




在这里插入图片描述



CPU 指令集

  • CPU 指令集:是 CPU 实现软件指挥硬件执行的媒介,具体来说每一条汇编语句都对应了一条CPU指令,而非常非常多的 CPU 指令在一起,可以组成一个、甚至多个集合,指令的集合叫CPU指令集。

  • CPU 指令集有权限分级,大家试想, CPU 指令集可以直接操作硬件的,要是因为指令操作的不规范,造成的错误会影响整个计算机系统的。好比你写程序,因为对硬件操作不熟悉,导致操作系统内核、及其他所有正在运行的程序,都可能会因为操作失误而受到不可挽回的错误,最后只能重启计算机才行。

对开发人员来说是个艰巨的任务,还会增加负担,同时开发人员在这方面也不被信任,所以操作系统内核直接屏蔽开发人员对硬件操作的可能,都不让你碰到这些 CPU 指令集。



CPU 指令集权限

针对上面的需求,硬件设备商直接提供硬件级别的支持,做法就是对 CPU 指令集设置了权限,不同级别权限能使用的 CPU 指令集是有限的,以 InterCPU 为例, Inter 把CPU 指令集操作的权限由高到低划为4级:

  • ring 0:权限最高,可以使用所有CPU指令集
  • ring 1
  • ring 2
  • ring 3:权限最低,仅能使用常规CPU指令集,不能使用操作硬件资源的CPU指令集,比如I/O读写、网卡访问、申请内存都不行


Linux 系统权限


要知道的是, Linux 系统仅采用 ring 0 和 ring 3 这2个权限。 CPU 中有一个标志字段,标志着线程的运行状态,用户态为3,内核态为0。

  • ring 0 被叫做内核态,完全在操作系统内核中运行
    • 执行内核空间的代码,具有 ring 0 保护级别,有对硬件的所有操作权限,可以执行所有CPU指令集,访问任意地址的内存,在内核模式下的任何异常都是灾难性的,将会导致整台机器停机
  • ring 3 被叫做用户态,在应用程序中运行
    • 在用户模式下,具有 ring 3 保护级别,代码没有对硬件的直接控制权限,也不能直接访问地址的内存,程序是通过调用系统接口( System Call APIs )来达到访问硬件和内存,在这种保护模式下,即时程序发生崩溃也是可以恢复的,在电脑上大部分程序都是在,用户模式下运行的

低权限的资源范围较小,高权限的资源范围更大,所以用户态与内核态的概念就是CPU指令集权限的区别。


我们通过指令集权限区分用户态和内核态,还限制了内存资源的使用,操作系统为用户态与内核态划分了两块内存空间,给它们对应的指令集使用。


在内存资源上的使用,操作系统对用户态与内核态也做了限制,每个进程创建都会分配虚拟空间地址,以 Linux32 位操作系统为例,它的寻址空间范围是 4G( 2 的 32 次方),而操作系统会把虚拟控制地址划分为两部分,一部分为内核空间,另一部分为用户空间,高位的 1G(从虚拟地址 0xC00000000xFFFFFFFF )由内核使用,而低位的 3G(从虚拟地址 0x000000000xBFFFFFFF )由各个进程使用。



在这里插入图片描述





http://www.kler.cn/a/532466.html

相关文章:

  • 如何创建折叠式Title
  • Python在线编辑器
  • Node 服务器数据响应类型处理
  • IntelliJ IDEA远程开发代理远程服务器端口(免费内网穿透)
  • 亚博microros小车-原生ubuntu支持系列:20 ROS Robot APP建图
  • 【C语言入门】解锁核心关键字的终极奥秘与实战应用(二)
  • Day35-【13003】短文,什么是顺序队列,链式队列,链式队列如何结合空闲单元链表使用?
  • React+AI 技术栈(2025 版)
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.27 NumPy+Pandas:高性能数据处理的黄金组合
  • 7-9 乘法口诀数列
  • 《chatwise:DeepSeek的界面部署》
  • AMD架构简单读书笔记3——内存模型1
  • 【Unity2D 2022:C#Script】DoTween插件的使用
  • VLAN 基础 | 不同 VLAN 间通信实验
  • Java-数据结构-优先级队列(堆)
  • 正态分布和标准正态分布区别与联系(复习)
  • Modbus Slave RTU 在 AVP28335(兼容德州仪器TMS 320 28335) 上实现含源码及注释。
  • deepseek本地部署及可视化输入
  • 中国城商行信贷业务数仓建设白皮书(第二期:信贷主题域建模)
  • 图论常见算法
  • 青少年编程与数学 02-008 Pyhon语言编程基础 12课题、条件与循环语句
  • Python零基础快速入门课程,自带在线运行环境
  • 网络原理一> ip协议相关特性
  • Windows图形界面(GUI)-QT-C/C++ - QT Frame
  • Vue整合Axios
  • 【C语言】球球大作战游戏