RISC-V特权级别

特权级别

RISC-V 共有6个特权级别:

机器模式(M模式)

M模式 全称为Machine mode(机器模式) 运行在这个模式下的程序为最高权限,它属于RISC-V 里的最高权限模式,它具有访问所有资源的权限,它的代码是百分百可信的,通常运行在这个模式下的为固件 和操作系统内核。

监管者模式(S模式)

S模式 全称**"Supervisor mode"(监管者模式)**

监管者模式 通常是用来运行操作系统内核 ,它的权限要比M模式低 ,它无法直接操作特殊寄存器 和某些资源 ,但内核通常会运行在S和M两个模式之间 ,在最初系统启动阶段内核是运行在M模式 下的,在这个模式下内核需要初始化所有的硬件资源 和进行内存管理 等等,当初始化完成之后会切换到S模式 下,通常内核里有一段代码是运行在M模式下和S模式下,M模式下的代码为S模式下的代码提供访问硬件资源 的能力。而S模式下的内核主要是为应用程序提供系统调用 以及上下文切换。

虽然说S模式 下可以访问部分硬件 ,但是硬件资源受限 这样会导致内核受到限制 比如MIE (Machine Interrupt Enable)寄存器,这个寄存器负责设置一些安全性较高的中断 ,所以内核里分两部分并运行在不同的模式下。

为什么内核不能全部运行在M模式下?

因为指令集 的不同,在不同的模式 下所对应的指令集不同 ,在RISC-V 里不同的模式下指令集是不同的,不能互相调用,M模式 下的指令集较少编写难度较大 ,所以内核分两部分,运行在M模式下的代码为内核提供访问硬件资源的能力,而S模式下的代码则更加灵活负责上下文调度 ,进程切换 、系统服务调用 、驱动管理。

除此之外也是为了防止用户态直接切换到M模式 下,这样直接切换到最高级别可能存在一定安全隐患被黑客利用。

用户模式(U模式)

U模式 全称为**"User Model"(用户模式)** 为级别最低 的模式,它不能访问硬件资源 ,只能访问某些通用寄存器 和通用指令 ,一般用于执行应用程序。

HS模式

HS模式 全称**"Hypervisor mode"(虚拟监管者模式)** ,在这个模式下具有和S模式 一样的权限 ,可以访问所有资源 ,在这个模式下VMM 可以不通过宿主机 的操作系统内核 直接访问硬件资源 ,为虚拟操作系统提供服务。

当然S模式 下也可以实现虚拟机 的功能,但需要特定的驱动 与宿主机操作系统 的支持。

VS模式

VS模式 全称**"Virtual Symmetric Multiprocessing mode"(虚拟对称多处理模式)** ,在这个模式下为VMM 提供多个虚拟处理器 的功能,VMM可以利用这个让每个虚拟处理器 具有S模式的权限。

VU模式

VU模式 全称**"Virtual User mode"(虚拟用户模式)** ,在这个模式下为不同虚拟操作系统 的虚拟用户态应用程序 提供虚拟内存 支持、特权操作 支持、操作系统隔离 和虚拟化支持等功能,从而满足不同的应用需求。

Tips

在虚拟化 中VMM 会处于不同的虚拟特权模式 下,简单点来说就是VMM在执行虚拟化操作系统 时会将宿主机的CPU切换 置不同的虚拟特权 模式下,比如执行虚拟操作系统 的部分CPU特权会切换置HS ,而虚拟处理器 功能则为VS 模式,执行虚拟应用程序 时为VU模式。

特权模式的应用场景

一般这些特权模式应用场景如下:

特权 使用场景
1. M模式 嵌入式系统
1. M模式 2. U模式 具有安全特性的嵌入式系统
1. M模式 2. S模式 3. U模式 通用操作系统
1. M模式 2. U模式 3. HS模式 4. VS模式 5. VU模式 虚拟化操作系统
相关推荐
国科安芯3 小时前
用 AS32X601 做一块关节电机驱动板:三相桥、电流采样、封波保护、FOC 代码一次讲透
risc-v·foc·bldc·关节电机·机器人关节·as32x601·三相逆变桥
硅基手札6 小时前
【risc-v专栏 07】启动与 bare-metal 流程
risc-v
硅基手札21 小时前
【risc-v专栏 08】扩展生态与 -march/-mabi 匹配
risc-v
硅基手札1 天前
【risc-v专栏 06b】内存架构深挖:PMA / ePMP / Cache / CMO / MMU 细节 / RVWMO 形式化
架构·risc-v
硅基手札1 天前
【risc-v专栏03】CSR 速查与特权架构 M/S/U
单片机·架构·risc-v
IvorySQL1 天前
去 IOE 的最后一公里:IvorySQL 5.4 × RISC-V 实测
数据库·人工智能·ai·postgresql·risc-v
RISCV_Explorer1 天前
技术指南:从总线协议到软件可见行为——RISC-V 多核缓存一致性的 Linux 实践
linux·缓存·risc-v
RISCV_Explorer8 天前
RISC-V内存属性配置深度专题——Svpbmt页表位、PMA优先级与设备访问策略
risc-v
RISCV_Explorer9 天前
RISC-V处理器性能优化:从指令集到微架构的协同设计
后端·risc-v
RISCV_Explorer12 天前
RISC-V启动与运行时规范机制解析——BRS约定、HSM多核启动与设备树要求
后端·risc-v