arm64架构kvm情景分析 - type1型和type2型虚拟机管理器

news2024/10/6 12:17:22

内核版本:linux-v5.9
架构:arm64

1 type1型和type2虚拟机管理器

在arm64架构中,共有EL3到EL0四个异常级别,EL3异常级别最高。通常操作系统(如linux)运行在EL1,应用程序运行在EL0,EL2则运行hypervisor管理程序。虚拟机管理器有type1型和type2型之分,kvm属于type2型虚拟机管理器。

首先思考type1型和type2虚拟机管理器有什么相同之处,即同样作为虚拟机管理器,它们都完成哪些工作。

  1. 虚拟机资源的管理:虚拟机地址空间的管理由虚拟机管理器统一管理;
  2. 虚拟机的调度和切换:虚拟机运行时VCPU需要进行调度和上下文切换;
  3. 虚拟设备的管理:虚拟机使用的虚拟设备即设备的中断由虚拟机管理器统一管理。

知道了两类虚拟机管理器都需要完成的工作后,再说明他们在完成上述工作时有何不同。type1型的虚拟机管理器在完成上述工作时,所有的行为都是在EL2完成的。而type2型的虚拟机管理器在完成上述工作时,大部分是在EL1完成的,即在EL1将虚拟机的运行时上下文准备好,而在EL2级别只实现模式切换,即将准备好的运行时上下文加载进寄存器。这里提到了模式切换,暂不描述。

然后再思考为什么会出现type1型和type2型在处理这些工作时存在不同的情况。解决这个问题后,再思考两种类型的优劣,也许就是type1型和type2型虚拟机出现的初衷。type1型虚拟机管理器完成虚拟机管理器的工作都在EL2,因为自虚拟机管理器启动到运行时,以及对资源的管理都是在EL2异常级别。type1型的架构图如图1.1所示。

在这里插入图片描述

图1.1 type1型虚拟机管理器的架构图

如图1.1所示,EL2运行的是虚拟机管理器(Hypervisor),EL1运行的是客户机(Guest OS),层次分明。图1.1中的Hypervisor一定程度上是一个运行在EL2异常级别的操作系统和虚拟化功能的组合(Host OS + Vitrulization)。在这样的组织架构下,EL2有能力进行资源管理,因为它本身具有操作系统的功能,所以虚拟机管理器需要完成的工作都在EL2完成。而type1型虚拟机管理器的架构图如图1.2所示。

在这里插入图片描述

图1.2 type2型虚拟机管理器的架构图

如图1.2所示,EL2异常级别仅提供虚拟化功能,而对资源进行管理的Host OS在EL1运行。在这样的组织架构下,自然在需要完成虚拟机管理器的工作时,需要到EL1的Host OS运行,在准备好Guest OS的运行时上下文后,切换至Guest OS运行。这里的Host OS具体就可以是开启了kvm功能的linux,如图1.3所示。

在这里插入图片描述

图1.3 linux+kvm的虚拟化框架图

如图1.3所示,开启了kvm功能的linux充当的就是Host OS的角色,全权负责对系统资源,包括Guest OS的管理。type1型和type2型虚拟机管理器由于组织架构的不同,导致实现虚拟机管理器所需的工作时出现不同之处。那么这两种类型的虚拟机管理器各有什么优劣。粗略的说是type1型效率更高,type2型效率低。而type2型可以复用已有的资源管理框架,如linux的内存管理、进程管理和设备驱动,type1型则需要自己实现或进行代理。type1型可以说是天生是为了管理虚拟机,type2型则可以说是为系统提供了虚拟化扩展和硬件加速。软件系统生态也会影响两类虚拟机管理器,linux有成熟的生态,例如开源的QEMU模拟器,设备驱动。所以两类虚拟机管理器孰优孰劣,则要根据使用场景进行判断。

通过一个情景来具体说明为何type1型效率高,而type2型效率低。假设虚拟机管理器通过地址映射为Guest OS配置了虚拟串口,然后Guest OS访问该串口以向串口设备传输一个字符。type1型的访问流程大致如图1.4所示。

在这里插入图片描述

图1.4 type1型模拟串口输出大致流程图

如图1.4所示,Guest OS在访问虚拟串口的时候会触发一个EL1同步异常,并在EL2被捕获。EL2获得该异常后,根据异常信息模拟串口输出,模拟完成后返回即可,其中异常信息通常包含触发异常的地址、读写操作标识、读写的内容和长度等。而type2型的访问大致流程如图1.5所示。

在这里插入图片描述

图1.5 type2型模拟串口输出大致流程图

图1.5中的详细内容暂不描述,此处仅用于type1型和type2型的对比。如图1.5所示,Guest OS同样是访问虚拟串口。则需要更复杂的流程,经过多次异常级别的转换。这个对比中同样也说明了type2型的优势,即能够复用Host OS(linux)的机制,并且复用Host OS的软件生态,使得Host OS和Host OS的软件生态也获得了虚拟化扩展和硬件加速能力。对type1型和type2型的讨论到此为止,kvm场景为type2型虚拟机管理器,后文将着重描述type2型,并具体到kvm。

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

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

相关文章

S32DS S32 Design Studio for S32 Platform 3.5 代码显示行号与空白符

介绍 NXP S32DS,全称 S32 Design Studio,s32 系列芯片默认使用 S32 Design Studio for S32 Platform 作为 IDE 集成开发环境,当前版本 S32 Design Studio for S32 Platform 3.5,IDE 可以简称 s32DS 使用 S32DS,可以认…

python操作SQLite3数据库进行增删改查

python操作SQLite3数据库进行增删改查 1、创建SQLite3数据库 可以通过Navicat图形化软件来创建: 2、创建表 利用Navicat图形化软件来创建: 存储在 SQLite 数据库中的每个值(或是由数据库引擎所操作的值)都有一个以下的存储类型: NULL. 值是空值。 INTEGER. 值是有符…

JavaWeb开发基础7个Web术语解析

7个Web术语 Website: static vs dynamic HTTP HTTP Requests GET vs POST Servlet Container Server: Web vs Application Content Type Website: static vs dynamic 网站内容包括文本、图片、音频、视频,通过URL来访问。网站分为静态网站和动态网站。 静态网…

LLMs之gptpdf:gptpdf的简介、安装和使用方法、案例应用之详细攻略

LLMs之gptpdf:gptpdf的简介、安装和使用方法、案例应用之详细攻略 目录 gptpdf的简介 1、处理流程 第一步,使用 PyMuPDF 库,对 PDF 进行解析出所有非文本区域,并做好标记,比如: 第二步,使用视觉大模型&…

【数智化人物展】天云数据CEO雷涛:大模型连接数据库 为数智化提供高价值数据...

雷涛 本文由天云数据CEO雷涛投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级先锋人物》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 这几天,奥特曼讲SQL数据库和大模型结合起来会产生什么样的化学变化引起行业关注。为…

13.SQL注入-宽字节

SQL注入-宽字节 含义: MySQL是用的PHP语言,然后PHP有addslashes()等函数,这类函数会自动过滤 ’ ‘’ null 等这些敏感字符,将它们转义成’ ‘’ \null;然后宽字节字符集比如GBK它会自动把两个字节的字符识别为一个汉…

frp技术

说明:frp(https://github.com/fatedier/frp) 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露…

19.JWT

1►JWT博客推荐 阮老师讲得很好了,网址如下: http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html 2►ry是怎么践行JWT的呢? 问题一:不登录的时候有token吗? 答:没有,所…

中标麒麟 RAC 19c 部署(Openssh免密BUG解决方案)

部署环境: 主机一主机二host ip192.168.80.46192.168.80.47vip 192.168.80.48192.168.80.49private ip192.168.10.10192.168.10.11storage ip192.168.20.33192.168.20.34主机名rac19c1rac19c2 需要上传的软件包: 一.虚拟机配置 选择中标麒麟IOS文件&am…

关于 element-ui el-cascader 数据回显问题的解决方案

前言 这两天在使用 el-cascader 控件时,后端日期的数据如“2023-05-06”前端需要按照“年-月-日”的形式分割成三级联动,因为数据库保存的是完整的日期,前端数据回显时需要对后端返回的数据进行处理。 问题再现 联动下拉框的数据如下&#x…

昇思25天学习打卡营第十四天|Pix2Pix实现图像转换

训练营进入第十四天,今天学的内容是Pix2Pix图像转换,记录一下学习内容: Pix2Pix概述 Pix2Pix是基于条件生成对抗网络(cGAN, Condition Generative Adversarial Networks )实现的一种深度学习图像转换模型&#xff0c…

C语言 -- 扫雷游戏

C语言 – 扫雷游戏 游戏规则: 给定一个棋盘,玩家需要排查出所有隐藏的雷,也就是选择出所有不是雷的地方。 玩家选择位置,若此处有雷,玩家被炸死,游戏结束; 若此处无雷,此处提示周围一…

【SOLID原则前端中的应用】里氏替换原则(Liskov Substitution Principle,LSP)- vue3示例

里氏替换原则(Liskov Substitution Principle,LSP)规定,子类对象必须能够替换父类对象,并且程序的行为保持不变。 在Vue 3中,这意味着我们在创建可替换的组件时,应该确保子组件能够完全替代父组…

Spring源码十五:Bean的加载

上一篇我们通过Spring源码十四:Spring生命周期介绍了refresh的最后两个方法,至此通过前面大概十篇左右的篇幅介绍完了Spring容器初始化,接下来,将进入Spring另外一个模块Bean相关的知识点。 在Spring框架中,Bean加载过…

动态白色小幽灵404网站源码

动态白色小幽灵404网站源码&#xff0c;页面时单页HTML源码&#xff0c;将代码放到空白的html里面&#xff0c;鼠标双击html即可查看效果&#xff0c;或者上传到服务器&#xff0c;错误页重定向这个界面即可&#xff0c;喜欢的朋友可以拿去使用 <!DOCTYPE html> <ht…

联想小新14Pro,误删了一个注册表,怎么办?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

uniapp报错--app.json: 在项目根目录未找到 app.json

【问题】 刚创建好的uni-app项目&#xff0c;运行微信小程序控制台报错如下&#xff1a; 【解决方案】 1. 程序根目录打开project.config.json文件 2. 配置miniprogramRoot&#xff0c;指定小程序代码的根目录 我的小程序代码编译后的工程文件目录为&#xff1a;dist/dev/mp…

Java常见面试题汇总带答案

本文分为十九个模块,分别是: Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网 络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、 Kafka、Zookeeper、MySQL、Redis、JVM 等等… JDK 和 JRE 有什么区别? JDK:Jav…

linux软链接和硬链接的区别

1 创建软链接和硬链接 如下图所示&#xff0c;一开始有两个文件soft和hard。使用 ln -s soft soft1创建软链接&#xff0c;soft1是soft的软链接&#xff1b;使用ln hard hard1创建硬链接&#xff0c;hard1是hard的硬链接。可以看到软链接的文件类型和其它3个文件的文件类型是不…

【测试专题】软件总体计划方案(2024原件word)

测试目标&#xff1a;确保项目的需求分析说明书中的所有功能需求都已实现&#xff0c;且能正常运行&#xff1b;确保项目的业务流程符合用户和产品设计要求&#xff1b;确保项目的界面美观、风格一致、易学习、易操作、易理解。 获取&#xff1a;软件全套文档过去进主页。 一、…