arm64虚拟化学习笔记

news2024/11/26 1:42:34

各种虚拟化对比

虚拟化种类优缺点实现
硬件加速虚拟化性能最好,最贵1.vcpu 2.内存stage2 3.虚拟中断 4.arch time
全虚拟化纯软件实现,性能差1.qemu串口 2.qemu磁盘
半虚拟化软件实现复杂1.Virtio block 设备 2.Virtio net 设备
io虚拟化加速移植性差1.PCI设备透传 2.AMBA设备透传

Arm64在硬件上提供了两种机制来发起virtual IRQ:
a.通过GIC中断控制器中断转发(通过LR寄存器)
b.通过CPU EL2的hypervisor 配置寄存器HCR_EL2.VI

通过GIC中断控制器中断转发,其中断在虚拟化的路由步骤:
1.外设中断输入源到达GIC
2.GIC向CPU发送一个物理中断信号
3.CPU会切换到EL2,然后HYPERVISOR通过PHYSICAL CPU INTERFACE获取中断的信息
4.然后HYPERVISOR 通过HYPERVISOR INTERFACE的LR寄存器写入对应虚拟中断的状态(PENDING)
5.VIRTUAL CPU INTERFACE 根据这个PENDING会向CPU发送一个VIRTUAL IRQ(因为提前配置ICH_LR 寄存器绑定物理中断号和虚拟中断号)
6.虚拟机被调度,虚拟机所在的CPU会获取这个VIRTUAL IRQ造成的中断异常
7.GUESTOS通过VIRTUAL CPU INTERFACE获取VIRTUAL IRQ的信息并处理

不通过GIC中断控制器中断转发,其中断在虚拟化的路由步骤:
1.THE GUEST OS 在 EL1 执行或者 GUEST OS 用户态 APP在 EL0 执行
2.外设中断到达 GIC, 并通过 PHYSICAL CPUINTERFACE 发送一个物理中断到 CPU。
3.CPU 会 TRAP 到 EL2, HYPERVISOR 通过 GIC_IAR1 响应中断,并获取中断的状态信息 (ID, 优先级 )
4.EL2 IRQ HANDLER 判断该中断是 HYPERVISOR 自己处理还是同虚拟中断注入虚拟机处理
5.HYPERVISOR 通过 HCR_EL2.VI 向虚拟机注入一个虚拟中断,没有使用 GIC LIST REGISTER
6.CPU 退出 HYPERVISOR 返回虚拟机所在的 EL1 或 EL0
7.因为 EL1 的 PSTATE.I 没被屏蔽 ,HCR_EL2.VI 将会触发一个虚拟中断异常,然后被 GUESTOS 的 IRQ HANDLER 处理

ICH_LR_EL2, Interrupt Controller List Registers, n = 0 - 15
在这里插入图片描述

位数名称含义
63:62State表示中断状态位;00:Invalid:01:Pending;10:Active;11:Pending and active
61HW表示此虚拟中断是否直接映射到硬件中断。0:中断完全由软件触发;1:中断直接映射到硬件中断。当虚拟中断被停用时,一个停用中断请求被发送到分发服务器,使用这个寄存器中的pINTID字段来指示物理中断ID。
60Group表示此虚拟中断的组。 表示是Group0还是Group1中断
59NMI表示虚拟优先级是否具有不可屏蔽属性。 0:虚拟中断没有不可屏蔽中断属性; 1:虚拟中断有不可屏蔽中断属性。
58:56res0保留位
55:48Priority表示该中断的优先级。
47:45res0保留位
44:32pINTID物理中断号,表示硬件中断。
31:0vINTID虚拟中断号,表示虚拟中断

中断控制器分类:
ICC__ELn(物理 cpu interface 系统寄存器):Host OS使用ICC__ELn处理常规的物理中断,这包括打开和关闭PE的中断处理能力,ack中断,为PE维护一个中断优先级掩码(只响应更高优先级中断),定义中断抢占策略,执行中断降级。
ICH__EL2(虚拟 cpu interface 控制系统寄存器):Hypervisor使用ICH__EL2控制virtual CPU interface,这包括打开和关闭virtual CPU interface,读写virtual CPU interface中的寄存器以实现vCPU的调度和上下文切换,配置maintenance中断,控制虚拟中断。
ICV__ELn(虚拟 cpu interface 系统寄存器):Guest OS里也能访问CPU interface,只不过它被映射到virtual CPU interface,我们可以将其视为physical CPU interface的shadow,它们具有完全一样的格式和功能。virtual CPU interface绑定到一个vPE,而vPE与PE的区别在于vPE是一个可被调度的软件线程。因此当vPE被调度走而不再运行时应该将virtual CPU interface的状态保存在内存中,而当vPE被调度再次运行时应该将内存中的状态恢复至virtual CPU interface。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java是编译型语言还是解释型语言?

基本概念 什么是编译型语言?编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码(二进制),比如C和C. 编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文…

mysql一explain结果分析

1. EXPLAIN简介 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 ➤ 通过EXPLAIN,我们可以分析出以下结果: 表的读取顺序数据读取操作的操作类型哪些索引可…

【LeetCode】背包问题总结

文章目录一、背包能否装满?416. 分割等和子集1049. 最后一块石头的重量 II二、装满背包有几种方法?494. 目标和518.零钱兑换II377. 组合总和 Ⅳ70. 爬楼梯三、背包装满的最大价值474.一和零四、装满背包最小物品数322. 零钱兑换279.完全平方数一、背包能…

win10+python3.6+cuda9+pytorch1.1.0安装

为了让torch可以使用显卡GPU加速,需要安装对应版本的cudatoolkit和pytorch。这里我的nvidia显卡驱动是9.1版本,只能安装cudatoolkit9。 一般支持gpu加速的显卡大部分都是英伟达nvidia系列,都自带了nvidia驱动,所以不需要安装nvidi…

一次失败的面试经历:我只想找个工作,你却用面试题羞辱我!

金三银四近在咫尺,即将又是一波求职月,面对跳槽的高峰期,很多软件测试人员都希望能拿一个满意的高薪offer,但是随着招聘职位的不断增多,面试的难度也随之加大,而面试官更是会择优录取小王最近为面试已经焦头…

大数据处理学习笔记1.7 Scala类与对象

文章目录零、本节学习目标一、类(一)类的定义(二)类的实例化二、单例对象(一)单例对象概念(二)案例演示三、伴生对象(一)伴生对象概念(二&#xf…

C++ vector学习与使用

本文皆在vs2015下运行,操作系统不一样结果可能有出入1.vector的介绍及使用1.1 vector的介绍string:动态类型的顺序表,只能存储charvector:动态类型的顺序表,任意类型的元素都可以存储endofstorage表示vector底层空间的…

Java_面向对象

Java_面向对象 1.面向对象概述 ​ 面向对象是一种符合人类思想习惯的编程思想。显示生活中存在各种形态的不同事物,这些食物存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的关系,这种思想就是面…

如何使用码匠连接 Redis

目录 在码匠中集成 Redis 在码匠中使用 Redis 关于码匠 Redis 是由 Salvatore Sanfilippo 用 C 语言开发的一款开源的、高性能的键值对存储数据库,它采用 BSD 协议,为了适应不同场景下的存储需求,提供了多种键值数据类型。到目前为止&…

汇川AM402和上位机C#ModebusTcp通讯

目录 一、测试任务 二、测试环境 三、PLC工程 1、组态配置 2、ip地址、端口号 3、全局变量定义 四、C#端Winform程序创建 1创建主界面 2、创建子窗口 3、运行生成,界面效果 4、Modebus协议说明 5、Modebus操作说明 六、测试 1、寄存器读测试 2、MW1300寄…

软件著作权登记申请表填错之后如何修改?软著登记官费有没有续费或年费?软件登记常见问题汇总

什么是计算机软件? 计算机软件是指计算机程序及其有关文档。计算机程序是指能实现一定功能的代码化指令序列,或者符号化语句序列。文档指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表,如程序设…

centos7如何远程连接Navicat数据库?

1、登录centos7,启动mysql服务 [rootlocalhost ~]# systemctl start mysqld 2、设置mysql服务开机自启 [rootlocalhost ~]# systemctl enable mysqld [rootlocalhost ~]# systemctl daemon-reload 3、查看mysql服务状态 4、若未更改初始密码,若已更改…

4.基于Label studio的训练数据标注指南:情感分析任务观点词抽取、属性抽取

情感分析任务Label Studio使用指南 1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等 2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等…

网络协议(九):应用层(域名、DNS、DHCP)

网络协议系列文章 网络协议(一):基本概念、计算机之间的连接方式 网络协议(二):MAC地址、IP地址、子网掩码、子网和超网 网络协议(三):路由器原理及数据包传输过程 网络协议(四):网络分类、ISP、上网方式、公网私网、NAT 网络…

听说你没法在 JRE 中使用 arthas?不,你可以

作者:卜比 本文是《容器中的 Java》系列文章之 5/n ,欢迎关注后续连载 😃 。 JVM如何获取当前容器的资源限制?——容器中的Java 1Java Agent踩坑之appendToSystemClassLoaderSearch问题——容器中的Java 2让 Java Agent 在 Drag…

SEO 如何提升网站权重?

关于SEO如何提高网站权重,米贸搜整理了以下内容,希望对大家有所帮助:1. 网站不能都使用收藏。有些站长,在网站上线之前,没有充分考虑,没有很好地定位网站,网站内容的来源从哪里来,就…

全网最详细的软件测试基础知识概述(绝密),一般人我不告诉他

目录 1、什么是软件 2、软件工程的内容 3、软件的生命周期 4、什么是软件测试 5、软件测试的方法 6、软件测试阶段有哪些任务 7、测试的原则 8、软件测试工作流程图 9、自动化测试 10、自动化测试的过程 11、自动化测试的优点 12、自动化测试技术 13、自动化测试的…

EasyExcel 实现写入多个sheet数据进excel模板并下载

目录说明说明 场景说明:对数据库或者其他数据源读取获取到数据,需要写入到excel完成下载功能,其中一个sheet是固定模板,只需要填充值,另一个sheet是动态的表头和数据需要填充。模板如下图,模板提前放在项目…

【简单DP】Children’s Queue

哈哈,独立做出来了,不错感觉这种暴力DP还是很好做的Problem - 1297 (hdu.edu.cn)题意:思路:写了这么多DP,我认识到DP的状态设计是最难的首先看阶段,就是第i个人然后影响决策的因素就是,女生不能…

【docker mysql】docker 快速安装mysql和redis

docker_hub 官网:点击docker_hub仓库地址 docker run --name mysql-bear -p 3307:3306 -e MYSQL_ROOT_PASSWORDmysql-bear -d mysql:latestdocker run --name redis-bear -p 6479:6379 -d redis再次使用docker ps 命令查看即可。 我这里把端口映射到主机上了&…