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

内核版本: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.mzph.cn/web/43630.shtml

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

相关文章

Apache中使用CGI

Apache24 使用Visual Studio 2022 // CGI2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <stdio.h> #include <stdlib.h>#include <stdio.h>void main() {//设置HTML语言printf("Content-type:text/html\n\n&q…

柯桥外语学校【韩语干货】“-고 있다” VS “-아/어/여 있다”

01 相同点 都可以用于动词之后&#xff0c;且形式有相似之处。 &#xff08;1&#xff09;민호 씨는 전화를 하고 있습니다. 敏镐正在打电话。 &#xff08;2&#xff09;황민 씨는 영어를 공부하고 있습니다. 黄珉正在学习英语。 &#xff08;3&#xff09;그 사람이 문 …

06_Shell内置命令

06_Shell内置命令 一、如何判断是否内置命令 使用type命令可以区分命令种类 二、alias #!/bin/bash#设置别名 psef alias psef"ps -ef | grep java"#删除别名 psef unalias psef#删除所有别名 unalias -a以上设置都是临时性的&#xff0c;真正永久设置&#xff0c;…

“离职员工”试图打包资料带走,如何防止敏感数据外泄?

2010年5月间&#xff0c;某家电巨头四名前职工非法泄露该家电洗衣机重要生产和采购环节数据&#xff0c;给家电集团造成直接经济损失共计2952.35万元。 2017年1月&#xff0c;某科技巨头消费者终端业务6名员工&#xff0c;离职后拿着该企业终端的知识产权结果赚钱&#xff0c;最…

【系统架构设计师】九、软件工程(软件测试)

目录 八、软件测试 8.1 测试分类 8.2 静态方法 8.2.1 静态测试 8.2.2 动态测试 8.2.3 自动化测试 8.3 测试阶段 8.3.1 单元测试 8.3.2 集成测试 8.3.3 确认测试 8.3.4 系统测试 8.3.5 性能测试 8.3.6 验收测试 8.3.7 其他测试 8.4 测试用例设计 8.4.1 黑…

springboot在线教育平台-计算机毕业设计源码68562

摘要 在数字化时代&#xff0c;随着信息技术的飞速发展&#xff0c;在线教育已成为教育领域的重要趋势。为了满足广大学习者对于灵活、高效学习方式的需求&#xff0c;基于Spring Boot的在线教育平台应运而生。Spring Boot以其快速开发、简便部署以及良好的可扩展性&#xff0c…

N6 word2vec文本分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言 前言 上周学习了训练word2vec模型&#xff0c;这周进行相关实战 1. 导入所需库和设备配置 import torch import torch.nn as nn import torchvision …

【启明智显分享】乐鑫HMI方案4.3寸触摸串口屏:水质检测仪应用解决方案

水是万物的源泉&#xff0c;了解水的酸碱度对于保障我们的健康、生产和生活环境至关重要。水质检测仪应运而生&#xff0c;它让我们能够洞察水的酸碱奥秘。 水是万物的源泉&#xff0c;了解水的酸碱度对于保障我们的健康、生产和生活环境至关重要。水质检测仪应运而生&#xff…

springboot药房库存管理系统-计算机毕业设计源码50588

目 录 摘要 1 绪论 1.1 研究背景与意义 1.2开发现状 1.3论文结构与章节安排 2 药房库存管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分…

谷歌报告显示:2023 年 50% 的0day漏洞利用背后都是间谍软件供应商

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 导 读 谷歌威胁分析小组 (TAG) 和谷歌子公司 Mandiant 表示&#xff0c;他们观察到 2023 年攻击中利用的0day漏洞…

垃圾百度网盘到底谁在使用

通过链接分享 通过链接分享到vx给好友查看好友在微信聊天框内打开百度网盘链接直接查看即使点击查看大图查看的图片依旧很模糊&#xff0c;不是原图点击右下角去app查看在百度网盘内部查看时&#xff0c;显示的和下载的才是原图真的是用户体验极差&#xff0c;真的垃圾… 通过…

数据结构与算法的联系(笔记)

文章目录 1. 什么是数据结构定义举例CRUD难道不是都一样吗&#xff1f; 总结 2. 什么是算法3. 数据结构与算法的联系举例 4. 推荐 1. 什么是数据结构 定义 数据结构(data structure)是计算机中存储、组织数据的方式。 关键词&#xff1a;① 数据 ② 存储 ③ 组织 举例 以手机通…

css简单易懂的加载动画,看不会算我输好吧

效果展示 步骤 第一阶段 先准备结构&#xff0c;并且放置12个div&#xff0c;每一个div旋转30*n度&#xff0c; 做一个圆圈 dom <div class"modal"><div class"loading"><div class"item1"></div><div class&quo…

Spark 分布式弹性计算集(RDD)相关概念介绍

目录 一、概述 二、RDD的核心概念 2.1 Partition 2.2 Partitioner 2.3 RDD的依赖关系 2.4 Stage 2.5 PreferredLocation 2.6 CheckPoint 三、RDD的持久化 3.1 概述 3.2 概念 3.3 RDD持久化级别 3.3.1 MEMORY_ONLY 3.3.2 MEMORY_AND_DISK 3.3.3 MEMORY_ONLY_SER …

基于语义的法律问答系统

第一步&#xff0c;准备数据集 第二步&#xff0c;构建索引数据集&#xff0c;问答对数据集&#xff0c;训练数据集&#xff0c;召回评估数据集 第三步&#xff0c;构建dataloader,选择优化器训练模型&#xff0c;之后召回评估 第四步&#xff0c;模型动转静&#xff0c;之后…

【UE5.1 角色练习】15-枪械射击——子弹发射物

目录 效果 步骤 一、创建并发射子弹 二、优化子弹 效果 步骤 一、创建并发射子弹 1. 在前面的文章中&#xff08;【UE5.1 角色练习】06-角色发射火球-part1&#xff09;我们创建了蓝图“BP_Skill_FireBall” 这里我们复制一份命名为“BP_Ammo_5mm”&#xff0c;用于表示…

若依搭建 帝可得 售货机 笔记

一、搭建项目 1.后端gitee链接&#xff1a; 启动项目时记得修改mysql和redis的相关信息&#xff1b;创建项目相关数据库&#xff0c;并导入初始化的SQL脚本 dkd-parent: 帝可得后台管理系统 (gitee.com) 2.前端gitee链接&#xff1a; 启动项目时记得安装依赖&#xff1a;np…

Github Action 自动部署更新静态网页服务

本文首发于 Anyeの小站&#xff0c;点击跳转 获得更优质的阅读体验 前言 贴一段胡话 在用过 应用&#xff1a;静态网页服务 之后&#xff0c;事实证明&#xff1a; 总而言之&#xff0c;自动化是一个很令人着迷的东西&#xff0c;摆脱重复繁琐的工作&#xff0c;解放了双手的…

JCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断

JJCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断 目录 JJCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断分类效果格拉姆矩阵图GAF-PCNN-MATTGASF-CNNGADF-CNN 基本介绍程序设计参考资料 分…

【45 Pandas+Pyecharts | 去哪儿海南旅游攻略数据分析可视化】

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 查看数据信息2.3 日期处理&#xff0c;提取年份、月份2.4 经费处理2.5 天数处理 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 出发日期_…