读书笔记 - 虚拟化技术 - 0 QEMU/KVM概述与历史

《QEMU/KVM源码解析与应用》 - 王强

概述

虚拟化简介

虚拟化思想

David Wheeler:计算机科学中任何问题都可以通过增加一个中间层来解决。

虚拟化思想存在与计算机科学的各个领域。
主要思想:通过分层将底层的复杂,难用的资源虚拟抽象为简单用于的资源,提供给上层使用。
(comment:驱动软件也是对设备的一种虚拟化?进程是对CPU的一种虚拟化?)

机器码,汇编,到C语言,再到高级语言,本质也是一个不断虚拟化的过程,将底层复杂的接口转变为上层容易使用的接口

虚拟机简介

虚拟机,Virtual Machine,VM
机,机器,只要能提供一个执行环境,完成用户指定任务的对象都可以叫做机器。

最简单的虚拟机是进程:
在这里插入图片描述
模拟器是另一种形式的虚拟机。模拟器可以使 为一种硬件指令集(ISA)编译的程序 运行在 另一种硬件指令集 上。
解释:对程序的源ISA指令一条一条进行分析,然后执行相应的ISA指令上的操作,感觉有点像解释器
二进制翻译:源ISA指令翻译为目标ISA上对应功能的指令,再在目标ISA机器上执行
在这里插入图片描述
典型模拟器:QEMU的用户态程序模拟,Bochs

高级语言虚拟机在模拟器的基础上更进一步:将源ISA和目的ISA完全分开
在这里插入图片描述
高级语言虚拟机一般会设计一套虚拟ISA
高级语言虚拟机的程序中没有任何具体物理ISA指令,都是自己定义的虚拟的指令,通常叫做字节码

一个想要运行这种虚拟ISA指令的物理ISA平台都需要实现一个虚拟机,该虚拟机执行虚拟ISA指令到物理ISA指令的转换。
(comment:底层的load确实很重,这就相当于每个平台都要实现一遍类似的指令映射表)
程序员通过高级语言编写程序,必须要考虑它运行的平台。

典型的高级语言虚拟机:JVM,python虚拟机

进程,模拟器,高级语言虚拟机,都只是提供了指令的执行环境
而系统虚拟机提供一个完整的系统环境。
在这里插入图片描述
虚拟机提供的完整系统环境中,能够运行多个用户多个进程。
通过系统虚拟化技术,可以在单个宿主机硬件平台上,运行多个虚拟机,每个虚拟机都有完整的虚拟出的硬件平台(如虚拟的CPU ,内存,虚拟外设等),虚拟机之间相互隔离。

管理全局的物理资源的软件,叫做虚拟机监视器,virtual machine monitor,VMM
VMM通过分时复用的方法,让硬件资源在各个虚拟机之间进行分配
VMM <-----> 硬件资源 <-----> 虚拟机
操作系统 <-------> CPU资源 <------> 进程

典型的虚拟化方案:

  1. VMware Workstation(VMware)
  2. HyperV(微软)
  3. Virtual Box:德国公司开发,甲骨文收购
  4. Xen:早期开源虚拟化方案。

历史

QEMU最开始是法国程序员Fabrice Bellard开发的一个模拟器。QEMU能够完成用户程序模拟和系统虚拟化虚拟

用户程序模拟:QEMU能够将一个平台编译的二进制文件运行在另一个平台,一个arm指令集的二进制文件可以通过QEMU的TCG引擎(Tiny Code Generator)处理处理之后,ARM指令转化为TCG中间代码,然后再转换成目的平台的代码.
系统虚拟化模拟指QEMU能够模拟出一个完整的系统虚拟机,这个虚拟机有自己的CPU,芯片组,虚拟内存以及各种虚拟外部设备。

QEMU能够模拟的平台很多,包括x86, ARM, MIPS, PPC等

虚拟化技术天生适用于云计算。云计算提供了一种按需服务的模式,让用户能够方便的更具自己的需要来使用各种计算,网络,存储资源。比如算力,用户可以指定不同CPU模型和内存规格的虚拟机,按需付费。云计算平台可以同伙系统虚拟化技术很方便地为用户提供所需配置的资源,如果用户删除资源,云计算平台可以直接删除对应虚拟机。

早期QEMU都是软件模拟,性能上不能满足要求。早期云计算平台通常使用Xen作为底层虚拟化平台。Xen是在x86架构上直接完成的虚拟化,这就需要修改虚拟机内部的操作系统,Xen的整个VMM非常复杂

intel和amd在2005年左右开始在CPU层面提供对系统虚拟化的支持,这就是硬件虚拟化。
intel在X86指令集基础上增加了一条VMX扩展指令VT-x,为CPU新增了运行模式,通过新的硬件虚拟化质量,可以方便地构造VMM
x86虚拟机的代码可以原生的运行在物理CPU上

以色列公司Qumranet基于新的虚拟化指令集实现了KVM。它现在是一个内核模块。
KVM导出了一系列接口到用户空间,用户空间可以使用这些接口创建虚拟机。
最早KVM只负责最核心的CPU虚拟化和内存虚拟化部分,使用QEMU作为其用户态组件,负责完成大量外设的模拟,该方案当时被叫做QEMU-KVM

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

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

相关文章

Spring Cloud 3.x 集成eureka快速入门Demo

1.什么是eureka&#xff1f; Eureka 由 Netflix 开发&#xff0c;是一种基于REST&#xff08;Representational State Transfer&#xff09;的服务&#xff0c;用于定位服务&#xff08;服务注册与发现&#xff09;&#xff0c;以实现中间层服务的负载均衡和故障转移&#xff…

day01-Qt5入门

day01-Qt5入门 窗体应用 1.1 窗体基类说明 创建项目在details中编辑器提供了三个基类&#xff0c;分别是 QMainWindows、Qwidget、QDialog 1、 QMainWindow QMainWindow 类提供一个有菜单条、锚接窗口&#xff08;例如工具条&#xff09;和一个状态条的主应用 程序窗口。…

Java-基础

1. 导入模块不能纯粹的复制粘贴&#xff0c;要从new里导入&#xff0c;因为前者建立不了关联 2. 数组 String[] name{"张三","李四","王五"};int[] numsnew int[]{1,2,3};//二维String[][] names{{"张三","李四"},{"…

RT-DETR改进策略:BackBone改进|CAFormer在RT-DETR中的创新应用,显著提升目标检测性能

摘要 在目标检测领域,模型性能的提升一直是研究者和开发者们关注的重点。近期,我们尝试将CAFormer模块引入RT-DETR模型中,以替换其原有的主干网络,这一创新性的改进带来了显著的性能提升。 CAFormer,作为MetaFormer框架下的一个变体,结合了深度可分离卷积和普通自注意力…

MATLAB - 机械臂手眼标定(眼在手内) - 估计安装在机器人上的移动相机的姿态

系列文章目录 前言 本示例展示了如何为装有手眼构型摄像头的机械臂或机械手执行和验证手眼校准。 一、概述 执行手眼校准有助于操作配备末端执行器&#xff08;简称 “手”&#xff09;的机械臂&#xff0c;该末端执行器依赖于摄像头提供的视觉数据。一旦完成了眼在手外的校准&…

LabVIEW 成绩统计系统

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

中科星图GVE(案例)——AI实现建筑用地变化前后对比情况

目录 简介 函数 gve.Services.AI.ConstructionLandChangeExtraction(image1,image2) 代码 结果 知识星球 机器学习 简介 AI可以通过分析卫星图像、航拍影像或其他地理信息数据&#xff0c;实现建筑用地变化前后对比。以下是一种可能的实现方法&#xff1a; 数据获取&am…

【Axure安装包与汉化包附带授权证书】

一、下载Axure安装包与汉化包附带授权证书 1.下载汉化包 【快传】: 点击链接即可保存 2.解压安装包 解压下载好的压缩包&#xff0c;能看到有lang也就是汉化包&#xff0c;AxureRP-Setup-RC.exe 也就是Axure9的安装程序&#xff0c;以及汉化说明和授权码。 二、安装Axure9…

小猿口算APP脚本(协议版)

小猿口算是一款专注于数学学习的教育应用,主要面向小学阶段的学生。它提供多种数学练习和测试,包括口算、速算、应用题等。通过智能化的题目生成和实时批改功能,帮助学生提高数学计算能力。此外,它还提供详细的学习报告和分析,帮助家长和教师了解学生的学习进度和薄弱环节…

【深度学习】— 多层感知机介绍、 隐藏层、从线性到非线性、线性模型的局限性

【深度学习】— 多层感知机介绍 4.1 多层感知机4.1.1 隐藏层线性模型的局限性引入隐藏层 4.2 从线性到非线性线性组合的局限性引入非线性堆叠更多隐藏层 4.1 多层感知机 在第 3 节中&#xff0c;我们介绍了 softmax 回归&#xff0c;并实现了其从零开始的实现和基于高级 API 的…

Springboot——使用poi实现excel动态图片导入解析

文章目录 前言依赖引入导入实现方式一方式二 导出参考 前言 最近要实现一个导入导出的功能点&#xff0c;需要能将带图片的列表数据导出到excel中&#xff0c;且可以导入带图片的excel列表数据。 考虑到低代码平台的表头与数据的不确定性&#xff0c;技术框架上暂定使用Apach…

IDEA下“File is read-only”可能原因及“找不到或无法加载主类”问题的解决

1.File is read-only”可能原因 写代码时想要修改这个静态变量的值&#xff0c;把这个语句注释掉&#xff0c;发现在这个文件中File is read-only无法编辑修改&#xff0c;于是想去掉这个状态 网上查看的解释大多是在File栏目或File->File Properties下可以找到Make File W…

边缘人工智能(Edge Intelligence)

边缘人工智能&#xff08;Edge AI&#xff09;是指在边缘设备上直接运行人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;算法的技术。机器学习是一个广泛的领域&#xff0c;近年来取得了巨大的进步。它所基于的原则是&#xff0c;计算机可以通过从数据…

QD1-P8 HTML 格式化标签(font、pre、b、strong、i、u、del、s、sub、sup)

本节学习&#xff1a;HTML 格式化标签。 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p8 ‍ 一、font 标签 用途&#xff1a;定义文本的字体大小、颜色和 face&#xff08;字体类型&#xff09;。 示例 <!DOCTYPE html> <html><head><meta cha…

基于Kafka2.1解读Producer原理

文章目录 前言一、Kafka Producer是什么&#xff1f;二、主要组件1.Kafka Producer1.1 partitioner1.2 keySerializer1.3 valueSerializer1.4 accumulator1.5 sender 2.Sender2.1 acks2.2 client2.3 inFlightBatches 3. Selector3.1 nioSelector3.2 channels 4. 全局总览5. 一点…

TCN-Transformer时间序列预测(多输入单预测)——基于Pytorch框架

1 数据集介绍 我们使用的数据集包含以下几个重要的属性&#xff1a; date&#xff08;日期&#xff09; open&#xff08;开盘价&#xff09; high&#xff08;最高价&#xff09; low&#xff08;最低价&#xff09; close&#xff08;收盘价&#xff09; pre_close&…

使用IOT-Tree Server制作一个边缘计算设备(Arm Linux)

最近实现了一个小项目&#xff0c;现场有多个不同厂家的设备&#xff0c;用户需要对此进行简单的整合&#xff0c;并实现一些联动控制。 我使用了IOT-Tree Server这个软件轻松实现了&#xff0c;不外乎有如下过程&#xff1a; 1&#xff09;使用Modbus协议对接现有设备&#…

无人机侦测:手提式无线电侦测设备技术详解

手提式无线电侦测设备在无人机侦测中扮演着重要角色&#xff0c;它主要通过侦测无人机与遥控器或地面站之间的无线电信号来实现对无人机的监测和定位。以下是对手提式无线电侦测设备技术的详细解析&#xff1a; 一、技术原理 手提式无线电侦测设备通过无线电侦测技术&#xf…

steam上传游戏问题汇总

问题 首先是Library Logo 必须是png图片&#xff0c;还必须带上游戏名字你的宣传图不能使用游戏内部的截图。Library_Hero必须是空白的&#xff0c;不能有任何文字。他是和Library_logo合并在一起的。这个法律其实没必要填写。然后我错误的把EULA填写在这里了也报错了 如果你在…

C++刷怪笼(7)string类

目录 1.前言 2.正文 2.1标准库中的string类 2.1.1string类 2.1.2auto和范围for 2.1.3string类的常用接口说明 2.2string类的模拟实现 2.2.1经典的string类问题 2.2.2浅拷贝 2.2.3深拷贝 ​编辑 2.2.4写时拷贝 3.小结 1.前言 前面我们对C的封装这一大特性进行了详细…