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

embedded/2025/2/5 11:26:00/




在这里插入图片描述



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.ppmy.cn/embedded/159734.html

相关文章

全局异常处理器

目录 一. 异常处理 \quad 一. 异常处理 \quad

XML DOM 节点信息

nodeName、nodeValue 和 nodeType 属性包含有关节点的信息。 尝试一下 - 实例 下面的实例使用 XML 文件 books.xml。 函数 loadXMLDoc(),位于外部 JavaScript 中,用于加载 XML 文件。 获取元素节点的节点名称 本例使用 nodeName 属性来获取 "book…

设计一个特殊token以从1亿词表中动态采样8192个词来表达当前序列

为了设计一个特殊token以从1亿词表中动态采样8192个词来表达当前序列,可以采用以下分步方案: 1. 特殊token的设计与作用 定义特殊token:在输入序列前添加一个特殊标记,如[SUBVOCAB]。该token的嵌入包含触发子词表采样的元信息。…

【回溯+剪枝】优美的排列 N皇后(含剪枝优化)

文章目录 526. 优美的排列解题思路:回溯 剪枝51. N 皇后解题思路:回溯 剪枝剪枝的优化 526. 优美的排列 526. 优美的排列 假设有从 1 到 n 的 n 个整数。用这些整数构造一个数组 perm(下标从 1 开始),只要满足下述…

Caxa 二次开发 ObjectCRX-1 踩坑:环境配置以及 Helloworld

绝了,坑是真 nm 的多,官方给的文档里到处都是坑。 用的环境 ObjectCRX,以下简称 objcrx。 #1 安装环境 & 参考文档的大坑 #1.1 Caxa 提供的文档和环境安装包 首先一定要跟 Caxa 对应版本的帮助里提供的 ObjectCRX 安装器 (wizard) 匹配…

CSS整体回顾

一. 邂逅CSS和常见的CSS 1.1. CSS的编写方式 1.2. 常见的CSS font-size/color/width/height/backgroundColor 二. 文本属性 2.1. text-decoration 2.2. text-indent 2.3. text-align 三. 字体属性 3.1. font-family 3.2. font-style 3.3. font-weight 3.4. font-size 3.5. …

【Three.js+React】教程002:添加lil-gui控制器和加载GLTF模型

文章目录 添加lil-gui加载gltf模型添加lil-gui 安装lil-gui: npm install lil-gui实现代码: function RotatingBox() {const meshRef = useRef();

第一章 语音识别概述

小爱同学,小度小度,天猫精灵,叮咚叮咚……我们身边好像突然就出现了一些可以和我们“聊天”的音箱,图所示为百度智能音箱。 智能音箱与传统音箱最大的区别就是能够听懂我们的语音,人们通过说话就能与电子设备沟通&…