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

ARM系列 -- 虚拟化(四)

今天来看看虚拟中断。

在一个非虚拟化的系统中,操作系统可以直接访问GIC的寄存器,并且处理GIC的物理中断接口(physical interrupt interface)。

但是在一个虚拟化的系统中,不是这样。Guest OS并不知道它运行在虚拟系统中,其接收的中断来自GIC的虚拟中断接口(virtual interrupt interface),但是OS本身并不知道;实际上是hypervisor接管了GIC的寄存器访问和物理中断接口,且hypervisor要负责产生虚拟中断给Guest OS。

还有另外一种方式产生虚拟中断,就是通过配置HCR_EL2,由内部CPU核产生。在HCR_EL2里面有三个bit用来产生虚拟中断:

  • VI:设置该bit产生一个vIRQ
  • VF:设置该bit产生一个vFIQ
  • VSE:设置该bit产生一个vSerror

设置这些bit位就相当于中断控制器向vCPU发送中断信号。生成的虚拟中断受PSTATE掩蔽的影响,就像常规中断一样。这种机制使用起来很简单,但缺点是hypervisor需要模拟中断控制器的操作。换言之,软件中的trap和emulate操作的开销比较大,影响性能。

通过GIC就能避免上面的问题。GIC的物理CPU接口和虚拟CPU接口是等同的,区别只是一个发送物理中断信号,另一个发送虚拟中断信号。

来看一个例子:

  • 外部中断到达GIC;
  • GIC产生一个物理IRQ给CPU;
  • CPU转换到EL2,hypervisor通过物理CPU接口读取中断;
  • Hypervisor写GIC的List寄存器产生虚拟中断;
  • GIC通过vIRQ发送中断给CPU;
  • CPU从EL2返回到EL1或者EL0;
  • Guest OS读取中断,CPU执行中断处理程序。

在GICv4中,增加了对虚拟机直接注入虚拟中断的支持。支持GICv4的IP是GIC-700.目前的虚拟中断直接注入支持产生LPI,也就是说系统中要有ITS组件。

  • Hypervisor会事先通过ITS命令配置ITS,重新映射虚拟core和物理core,虚拟中断和物理中断。
  • 当ITS接到消息中断后,先要查表得到虚拟的INTID和虚拟PE,然后发给相应的redistributor。
  • Redistributor会去检查内部的寄存器,查看vPE是否在自己这边注册过。
  • 如果注册过,发虚拟中断给vPE;
  • 如果没有,发中断给hypervisor。

GIC-700也支持软件通过将vPE和SGI-INTID写入GITS_SGIR寄存器的方式来直接注入SGI。对于PPI和SPI的直接注入,目前尚不支持。

作者:老秦谈芯

相关文章:

ARM系列 -- 虚拟化(四)

今天来看看虚拟中断。 在一个非虚拟化的系统中,操作系统可以直接访问GIC的寄存器,并且处理GIC的物理中断接口(physical interrupt interface)。 但是在一个虚拟化的系统中,不是这样。Guest OS并不知道它运行在虚拟系…...

QT GUI编程常用控件学习

1 GUI编程应该学什么 2 QT常用模块结构 QtCore: 包含了核心的非GUI的功能。主要和时间、文件与文件夹、各种数据、流、URLs、mime类文件、进程与线程一起使用 QtGui: 包含了窗口系统、事件处理、2D图像、基本绘画、字体和文字类 QtWidgets: 包含了一些列创建桌面应用的UI元素…...

【Python从入门到进阶】49、当当网Scrapy项目实战(二)

接上篇《48、当当网Scrapy项目实战(一)》 上一篇我们正式开启了一个Scrapy爬虫项目的实战,对当当网进行剖析和抓取。本篇我们继续编写该当当网的项目,讲解刚刚编写的Spider与item之间的关系,以及如何使用item&#xff…...

flutter build ipa 打包比 xcode archive 打出的ipa包大

为什么 flutter build ipa 打包比 xcode archive 打出的ipa包大? 如果你用Flutter构建的.ipa文件比通过Xcode Archive构建的.ipa文件要大,这可能是因为Flutter构建了一个包含了多平台的二进制文件的通用包。这意味着在Flutter构建的.ipa中包含了所有的C…...

B端系统:巧妙地容错和防错设置,减少用户操作错误

Hi,大家好,我是大美B端工场,从事8年前端开发的老司机。很多B端系统体验不好,让用户非常茫然或者容易出错,大大降低了操作体验,本文着重分析B端系统的容错机制该如何设计,欢迎老铁们关注、评论、…...

BIO实战、NIO编程与直接内存、零拷贝深入辨析

BIO实战、NIO编程与直接内存、零拷贝深入辨析 长连接、短连接 长连接 socket连接后不管是否使用都会保持连接状态多用于操作频繁,点对点的通讯,避免频繁socket创建造成资源浪费,比如TCP 短连接 socket连接后发送完数据后就断开早期的http服…...

PDF文件转换为图片

现在确实有很多线上的工具可以把pdf文件转为图片,比如smallpdf等等,都很好用。但我们有时会碰到一些敏感数据,或者要批量去转,那么需要自己写脚本来实现,以下脚本可以提供这个功能~ def pdf2img(pdf_dir, result_path…...

【Java程序设计】【C00317】基于Springboot的智慧社区居家养老健康管理系统(有论文)

基于Springboot的智慧社区居家养老健康管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的智慧社区居家养老健康管理系统设计与实现,本系统有管理员、社区工作人员、医生以及家属四种角色权限 管…...

Vue3前端实现一个本地消息队列(MQ), 让消息延迟消费或者做缓存

MQ功能实现的具体代码(TsMQ.ts): import { v4 as uuidx } from uuid;import emitter from /utils/mitt// 消息类 class Message {// 过期时间,0表示马上就消费exp: number;// 消费标识,避免重复消费tag : string;// 消息体body : any;constr…...

普中51单片机学习(8*8LED点阵)

8*8LED点阵 实验代码 #include "reg52.h" #include "intrins.h"typedef unsigned int u16; typedef unsigned char u8; u8 lednum0x80;sbit SHCPP3^6; sbit SERP3^4; sbit STCPP3^5;void HC595SENDBYTE(u8 dat) {u8 a;SHCP1;STCP1;for(a0;a<8;a){SERd…...

Python 实现Excel自动化办公(上)

在Python 中你要针对某个对象进行操作&#xff0c;是需要安装与其对应的第三方库的&#xff0c;这里对于Excel 也不例外&#xff0c;它也有对应的第三方库&#xff0c;即xlrd 库。 什么是xlrd库 Python 操作Excel 主要用到xlrd和xlwt这两个库&#xff0c;即xlrd是读Excel &am…...

DayDreamInGIS 之 ArcGIS Pro二次开发 图层属性中换行符等特殊字符替换

具体参考ArcMap中类似的问题&#xff0c;本帖开发一个ArcGISPro版的工具 1.基础库部分 插件开发&#xff0c;经常需要处理图层与界面的交互。基础库把常用的交互部分做了封装&#xff0c;方便之后的重复使用。 &#xff08;1&#xff09;下述类定义了数据存储结构&#xff0…...

RK3568平台 RTC时间框架

一.RTC时间框架概述 RTC&#xff08;Real Time Clock&#xff09;是一种用于计时的模块&#xff0c;可以是再soc内部&#xff0c;也可以是外部模块。对于soc内部的RTC&#xff0c;只需要读取寄存器即可&#xff0c;对于外部模块的RTC&#xff0c;一般需要使用到I2C接口进行读取…...

番外篇 | YOLOv5+DeepSort实现行人目标跟踪检测

前言:Hello大家好,我是小哥谈。DeepSort是一种用于目标跟踪的深度学习算法。它结合了目标检测和目标跟踪的技术,能够在视频中准确地跟踪多个目标,并为每个目标分配一个唯一的ID。DeepSort的核心思想是将目标检测和目标跟踪两个任务进行联合训练,以提高跟踪的准确性和稳定性…...

认识Sass

sass中文文档&#xff1a; Sass: Sass 文档 1. sass的安装步骤 1. 卸载冲突的Node.js (1) winR输入control,找到电脑上的卸载软件&#xff0c;找到Node.js&#xff0c;右键”卸载” (2) winR输入cmd,输入命令:node -v查看结果。 如果提示: node 不…...

YOLOv9-Openvino和ONNXRuntime推理【CPU】

1 环境&#xff1a; CPU&#xff1a;i5-12500 Python&#xff1a;3.8.18 2 安装Openvino和ONNXRuntime 2.1 Openvino简介 Openvino是由Intel开发的专门用于优化和部署人工智能推理的半开源的工具包&#xff0c;主要用于对深度推理做优化。 Openvino内部集成了Opencv、Tens…...

AIGC 架构:RAG (retrieval augumented generation) 应用可以使用 PostgreSQL 作为向量数据库组件吗?

是的&#xff0c;RAG&#xff08;检索增强生成&#xff09;应用程序可以绝对地使用 PostgreSQL 作为向量数据库&#xff01;事实上&#xff0c;它是一个流行的选择&#xff0c;因为有以下几个优点&#xff1a; 使用 PostgreSQL 和 pgvector 的优点&#xff1a; 集成解决方案&…...

leetcode:134.加油站

解题思路&#xff1a;需要注意开始时的编号&#xff0c;有的可以走一圈&#xff0c;有的走不了 模拟过程&#xff1a;for循环主要是用来模拟线性的过程&#xff0c;而在这里它是环状的&#xff1b; 可以用暴力解法&#xff0c;但是在这里我用贪心来解决。 常见疑惑&#xff1…...

uniapp的微信小程序授权头像昵称(最新版)

前面我出过两期博客关于小程序授权登录,利用php实现一个简单的小程序授权登录并存储授权用户信息到数据库的完整流程。无奈&#xff0c;小程序官方又整幺蛾子了。wx.getUserInfo接口收回&#xff0c;wx.getUserProfile接口也不让用。导致我的个人小程序&#xff1a;梦缘 的授权…...

Spring Boot到底是如何进行自动配置的?

【1】从 spring.factories 配置文件中加载 EnableAutoConfiguration 自动配置类&#xff09;,获取的自动配 置类如图所示。 【2】若 EnableAutoConfiguration 等注解标有要 exclude 的自动配置类&#xff0c;那么再将这个自动配置类 排除掉&#xff1b; 【3】排除掉要 exclude …...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...