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

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模式
虚拟化操作系统

相关文章:

RISC-V特权级别

特权级别 RISC-V共有6个特权级别: 机器模式(M模式) M模式全称为Machine mode(机器模式)运行在这个模式下的程序为最高权限,它属于RISC-V里的最高权限模式,它具有访问所有资源的权限&#xff…...

RISC-V 指令集介绍

1. 背景介绍 指令集从本质上可以分为复杂指令集(Complex Instruction Set Computer,CISC)和精简指令集(Reduced Instruction Set Computer,RISC)两种。复杂指令集的特点是能够在一条指令内完成很多事情。 指…...

操作系统5

设备管理 I/O设备 什么是?--- 将数据Input/Output(输入/输出)计算机的外部设备。 分类: 按使用特性:人机交互类外设、存储设备、网络通信设备; 按传输速度:低速、中速、高速设备&#xff1…...

K8S系列文章之 Docker常用命令

一、镜像基础命令: $ docker info # 查看docker信息 $ docker system df # 查看镜像/容器/数据卷所占的空间。 $ ip addr #查看容器内部网络地址。 $ docker images # 查看镜像 $ docker search 镜像名称 # 搜索镜像 --limit :只列出N个镜像,默认为25个…...

谷歌: 安卓补丁漏洞让 N-days 与 0-days 同样危险

近日,谷歌发布了年度零日漏洞报告,展示了 2022 年的野外漏洞统计数据,并强调了 Android 平台中长期存在的问题,该问题在很长一段时间内提高了已披露漏洞的价值和使用。 更具体地说,谷歌的报告强调了安卓系统中的 &quo…...

linux 学成之路(基础篇)(二十三)MySQL服务(下)

目录 一、用户权限管理概述 二、用户权限类型 三、用户赋予权限 四、删除权限 五、删除用户 一、用户权限管理概述 数据库用户权限管理是数据库系统中非常重要的一个方面,它用于控制不同用户访问和操作数据库的权限范围。数据库用户权限管理可以保护敏感数据和…...

MySQL初探

Background 通过阅读小林coding,大致了解了mysql数据库的种种特点,与之前学的数据库实现大体思路相同,感觉学习不能停留在理论层面,要调研生产级别的中间件实现。 一条代码运行在mysql上的流程 1. 连接的过程需要先经过 TCP 三次…...

blender 用蒙版添加材质

一、添加材质常规方法 选择物体新建材质,shift a 新建图像纹理,此时会发现添加上的纹理会有接缝,shift a 新建映射 纹理坐标,纹理坐标选择生成,此时,之前的接缝便会消失; 如何快捷添加纹理坐…...

前端面试的性能优化部分(2)每篇10题

1. 常见的图片格式及使用场景 常见的图片格式有 JPEG、PNG、GIF、WebP 和 SVG,它们各有适用的使用场景: JPEG (Joint Photographic Experts Group): 使用场景:适用于照片和真实场景的图片,特别是色彩丰富和渐变丰富的…...

Spring——Spring是什么?IoC容器是什么?

文章目录 前言一、Spring是什么1.IoC 容器 —— 容器2.IoC 容器 —— IoC传统程序开发控制反转式程序开发 3.Spring IoC 二、DI是什么总结 前言 本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话,互关一下…...

【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Pythonmatlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

golang深刻剖析——channel

文章目录 1 概念2 分类3 操作3.1 channel 的创建3.1.1 无缓冲channel3.1.1 带缓冲channel 3.2 channel的读写3.3 channel的关闭3.4 channel 和 select 4 channel 底层原理 1 概念 channel 是一个通道,用于端到端的数据传输,这有点像我们平常使用的消息队…...

ERROR in unable to locate ‘***/public/**/*‘ glob

前提 自己搭了一个react项目的脚手架,npm包下载一切都很正常,启动的时候突然就报ERROR in unable to locate ***/public/**/* glob这个错误,根据百度分析了一下产生的原因:webpack配置文件中的CopyWebpackPlugin导致的 网上给出的…...

简述一下你了解的 Java 设计模式

创建型模式 ★单例模式:保证某个类只能有一个唯一实例,并提供一个全局的访问点。 ★简单工厂:一个工厂类根据传入的参数决定创建出那一种产品类的实例。 工厂方法:定义一个创建对象的接口,让子类决定实例化那个类。 抽…...

[开发] 认证的几种方式简介

LDAP 认证 LDAP(轻量级目录访问协议)是一种用于访问和维护分布式目录信息的开放标准协议。它最初由电子数据系统公司(Netscape)开发,现在被广泛用于企业和组织中的身份认证和授权管理。LDAP的目标是为不同类型的应用程…...

ansible-playbook roles模块编写lnmp剧本

目录 一:集中式编写lnmp剧本 二:分布式安装lnmp 1、nginx 配置 2、mysql配置 3、php配置 4、运行剧本 一:集中式编写lnmp剧本 vim /etc/ansible/lnmp.yml- name: lnmp playhosts: dbserversremote_user: roottasks:- name: perpare condif…...

什么是汽车软件的模糊测试?

汽车软件的模糊测试(fuzz testing)是一种在软件开发过程中用来发现潜在漏洞和缺陷的测试方法。它通过输入大量的随机、无效或异常数据来模拟真实环境中各种可能的异常情况,以测试软件的健壮性和稳定性。 1. 确定模糊测试的目标:确…...

Datax使用

参考文档 datax 安装包 安装包 安装java sudo yum install java-1.8.0-openjdk sudo yum install java-1.8.0-openjdk-develvim /etc/profileexport JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.372.b07-1.el7_9.x86_64 export PATH$JAVA_HOME/bin:$PATHsource /etc…...

HTML不常用但是好用的标签

sub sup <p>这个文本包含 <sub>111</sub>文本。</p> <p>这个文本包含 <sup>上标</sup> 文本。</p>下标文本将会显示在当前文本流中字符高度的一半为基准线的下方&#xff0c;但是与当前文本流中文字的字体和字号都是一样的。…...

蓝桥杯2018省赛全球变暖dfs

全球变暖 问题描述格式输入格式输出样例输入样例输出评测用例规模与约定解析参考程序 问题描述 格式输入 格式输出 输出一个整数 样例输入 样例输出 1 评测用例规模与约定 最大运行时间&#xff1a;1s最大运行内存: 256M 解析 采用dfs的方式进行搜索&#xff0c;首先输入地…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...