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

读书笔记 - 虚拟化技术 - 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

相关文章:

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

《QEMU/KVM源码解析与应用》 - 王强 概述 虚拟化简介 虚拟化思想 David Wheeler&#xff1a;计算机科学中任何问题都可以通过增加一个中间层来解决。 虚拟化思想存在与计算机科学的各个领域。 主要思想&#xff1a;通过分层将底层的复杂&#xff0c;难用的资源虚拟抽象为简…...

常见的负载均衡

1.常见的负载均衡服务 负载均衡服务是分布式系统中用于分配网络流量和请求的关键组件&#xff0c;它可以帮助提高应用程序的可用性、可扩展性和响应速度。以下是一些常用的负载均衡服务&#xff1a; Nginx&#xff1a;一个高性能的Web服务器和反向代理&#xff0c;广泛用于实现…...

利用sessionStorage收集用户访问信息,然后传递给后端

这里只是简单的收集用户的停留时间、页面加载时间、当前页面URL及来源页面&#xff0c;以做示例 <html><head><meta http-equiv"content-type" content"text/html; charsetUTF-8"/><title>测试sessionStorage存储用户访问信息<…...

什么是Qseven?模块电脑(核心板)规范标准简介二

1.概念 Qseven是一种通用的、小尺寸计算机模块标准&#xff0c;适用于需要低功耗、低成本和高性能的应用。 Qseven模块电脑&#xff08;核心板&#xff09;采用230Pin金手指连接器 2.Qseven的起源 Qseven最初是由Congatec、SECO、MSC三家欧洲公司于2008年发起&#xff0c;旨在…...

leetcode数组(三)-有序数组的平方

题目 . - 力扣&#xff08;LeetCode&#xff09; 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 例1 输入&#xff1a;nums [-4,-1,0,3,10] 输出&#xff1a;[0,1,9,16,100] 解释&#…...

HCIP-HarmonyOS Application Developer 习题(五)

1、以下哪种原子化布局能力属于自适应变化能力? A. 拉伸 B.占比 C. 隐藏 D.拆行 答案&#xff1a;A 分析&#xff1a;划分为“自适应变化能力”和“自适应布局能力”两类。 其中&#xff0c;自适应变化能力包含了缩放能力和拉伸能力&#xff0c;自适应布局能力包含了隐藏、折…...

【详细教程】如何使用YOLOv11进行图像与视频的目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

H7-TOOL的LUA小程序教程第14期:任意波形信号发生器,0-20mA输出和微型数控电源(2024-10-11,已更新)

LUA脚本的好处是用户可以根据自己注册的一批API&#xff08;当前TOOL已经提供了几百个函数供大家使用&#xff09;&#xff0c;实现各种小程序&#xff0c;不再限制Flash里面已经下载的程序&#xff0c;就跟手机安装APP差不多&#xff0c;所以在H7-TOOL里面被广泛使用&#xff…...

Redis面试篇3

1、Redis的数据类型&#xff0c;以及每种数据类型的使用场景&#xff1f; 常见的几种数据类型和使用场景如下&#xff1a; 字符串(String)&#xff1a;字符串类型是Redis最基本的数据结构&#xff0c;一个键最大能存储512MB。 使用场景&#xff1a;适用于计数器、分布式锁、缓…...

集成方案 | 借助 Microsoft Copilot for Sales 与 Docusign,加速销售流程!

加速协议信息提取&#xff0c;随时优化邮件内容~ 在当今信息爆炸的时代&#xff0c;销售人员掌握着丰富的数据资源。他们能够通过 CRM 平台、电子邮件、合同库以及其他多种记录系统&#xff0c;随时检索特定个人或组织的关键信息。这些数据对于销售沟通至关重要。然而&#x…...

k8s 1.28.2 集群部署 MinIO 分布式集群

文章目录 [toc]MinIO 介绍MinIO 生产硬件要求MinIO 存储要求MinIO 内存要求MinIO 网络要求MinIO 部署架构分布式 MinIO复制的 MinIO 部署 MinIO创建目录节点打标签创建 namespace创建 pv创建 MinIO配置 ingress问题记录通过代理服务器访问 MinIO 的 Object Browser 界面一直显示…...

HAL库常用的函数:

目录 HAL库&#xff1a; 1.GPIO常用函数&#xff1a; 1.HAL_GPIO_ReadPin( ) 2.HAL_GPIO_WritePin( ) 3.HAL_GPIO_TogglePin( ) 4.HAL_GPIO_EXTI_IRQHandler( ) 5.HAL_GPIO_EXTI_Callback( ) 2.UART常用函数&#xff1a; 1.HAL_U…...

如何捕捉行情爆发的前兆

在金融市场的激烈角逐中&#xff0c;每一次行情的爆发都是投资者获取丰厚回报的关键时刻。然而&#xff0c;如何识别并把握这些时刻&#xff0c;却是一门需要深厚金融专业知识和敏锐洞察力的艺术。今天&#xff0c;我们就来深入探讨行情爆发的初期信号&#xff0c;揭示那些能够…...

【万字长文】Word2Vec计算详解(一)CBOW模型

【万字长文】Word2Vec计算详解&#xff08;一&#xff09;CBOW模型 写在前面 本文用于记录本人学习NLP过程中&#xff0c;学习Word2Vec部分时的详细过程&#xff0c;本文与本人写的其他文章一样&#xff0c;旨在给出Word2Vec模型中的详细计算过程&#xff0c;包括每个模块的计…...

React Native源码学习

核心组件 基础组件&#xff1a;View、Text、Image、TextInput、ScrollView&#xff08;性能没有FlatList好&#xff0c;因为它会一次性把子元素渲染出来&#xff09;、StyleSheet交互组件&#xff1a;button列表视图&#xff1a;FlatList&#xff08;优先渲染屏幕上可见的元素&…...

【计网】从零开始认识https协议 --- 保证安全的网络通信

在每个死胡同的尽头&#xff0c; 都有另一个维度的天空&#xff0c; 在无路可走时迫使你腾空而起&#xff0c; 那就是奇迹。 --- 廖一梅 --- 从零开始认识https协议 1 什么是https协议2 https通信方案2.1 只使用对称加密2.2 只使用非对称加密2.3 双方都使用非对称加密2.4 …...

Ubuntu安装 MySQL【亲测有效】

在Ubuntu上安装MySQL数据库的步骤通常包括更新软件包列表、安装MySQL服务器、启动并配置MySQL服务等。以下是一个详细的安装指南&#xff1a; 一、更新软件包列表 首先&#xff0c;打开终端并输入以下命令来更新Ubuntu的软件包列表&#xff1a; sudo apt update二、安装MySQ…...

Unity 从零开始搭建一套简单易用的UGUI小框架 扩展与优化篇(完结)

一个通用的UGUI小框架就算是写完了&#xff0c;下面是一步步的思考与优化过程 Unity 从零开始搭建一套简单易用的UGUI小框架 基础分析篇-CSDN博客 Unity 从零开始搭建一套简单易用的UGUI小框架 功能撰写与优化篇-CSDN博客 从使用者的角度来整理一下可能会发出的疑问 0. Panel…...

MySQL多表操作--外键约束多表关系

外键约束介绍 Mysql外键约束&#xff08;foreign key&#xff09;是表的一个特殊字段&#xff0c;常与主键约束一起使用。外键约束是一种用于维护两个表之间数据一致性的方法。它确保引用表中的每个值都存在于主表中的某个列中。外键约束通常用于实现数据库的参照完整性。对于两…...

【python入门到精通专题】8.装饰器

装饰器是python语言中的语法糖&#xff0c;可以通过装饰器对函数的功能进行拓展。 为什么需要装饰器 我们假设你的程序实现了say_hello()和say_goodbye()两个函数。 def say_hello():print("hello!")def say_goodbye():print("hello!") # 此处应打印go…...

Edge浏览器专属:B站直播实时字幕插件开发全记录(附源码下载)

Edge浏览器实现B站直播实时字幕的技术解析与实战 作为一名长期关注Web语音技术的开发者&#xff0c;我最近在Edge浏览器上成功实现了一个B站直播实时字幕插件。这个项目的核心价值在于解决了无字幕直播场景下的信息获取难题——根据用户反馈&#xff0c;超过68%的观众会在没有字…...

抖音批量下载终极指南:免费无水印视频一键获取

抖音批量下载终极指南&#xff1a;免费无水印视频一键获取 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾为保存喜欢的抖音视频而烦恼&#xff1f;面对心仪的内容创作者&#xff0c;想要收藏他们的…...

AI智能体工作完整源码大公开!企业级多Agent框架,一键私有化部署

温馨提示&#xff1a;文末有资源获取方式最近“龙虾AI”的热度席卷技术圈&#xff0c;大家都在讨论如何“养殖”自己的智能体。但真正落地时&#xff0c;技术门槛、Token消耗与复杂的协同问题&#xff0c;往往让普通用户和企业望而却步。今天我们不谈概念&#xff0c;直接分享一…...

注意力机制融合新范式:从GCNet与DANet看全局建模的演进与实战

1. 视觉注意力机制的进化之路 记得我第一次接触视觉注意力机制是在2016年&#xff0c;那时ResNet刚掀起深度学习的新浪潮。当时最让我困惑的是&#xff1a;为什么神经网络需要"注意力"&#xff1f;后来在ImageNet数据集上做实验时才明白&#xff0c;传统CNN就像近视眼…...

若依框架二次开发避坑指南:手把手教你定制菜品管理系统

若依框架二次开发实战&#xff1a;从零构建餐饮管理系统的高效避坑手册 当接到基于若依框架开发餐饮管理系统的任务时&#xff0c;很多开发者会陷入"能用但不好用"的困境。本文将分享我在三个不同规模餐饮项目中积累的实战经验&#xff0c;重点解析那些官方文档不会告…...

水下机器人导航的‘感官进化’:从纯视觉VIO到声光惯压融合的SVIn2系统拆解

水下机器人导航的‘感官进化’&#xff1a;从纯视觉VIO到声光惯压融合的SVIn2系统拆解 当一台水下机器人潜入浑浊的湖泊执行管道巡检任务时&#xff0c;它的视觉传感器突然失效——悬浮颗粒使画面变成乳白色噪点&#xff0c;而水流扰动让惯性测量单元(IMU)数据充满噪声。这正是…...

农业IoT部署卡在MQTT连接失败?Python异步通信优化全链路解析(含田间实测吞吐量对比数据)

第一章&#xff1a;农业IoT部署卡在MQTT连接失败&#xff1f;Python异步通信优化全链路解析&#xff08;含田间实测吞吐量对比数据&#xff09;在华北平原某智慧农场的边缘网关部署中&#xff0c;23台土壤温湿度传感器频繁出现MQTT连接超时与会话重置现象&#xff0c;平均重连耗…...

ElasticSearch查询集群及设置

Elasticsearch查询集群API示例 查看集群状态及监控 参考资料 https://www.elastic.co/guide/en/elasticsearch/reference/6.6/cluster-health.html https://www.elastic.co/guide/en/elasticsearch/reference/6.6/cluster-nodes-stats.html 查看集群状态 健康状态 curl -XGE…...

别再手动填Token了!用Knife4j的OAuth2配置,一键搞定接口文档自动化认证

告别手动Token时代&#xff1a;Knife4j与OAuth2的自动化认证实战 每次调试API都要复制粘贴Token的日子该结束了。作为后端开发者&#xff0c;我们花了大量时间在接口文档和认证流程之间来回切换——这不仅是效率问题&#xff0c;更是一种思维中断。想象一下&#xff0c;当你的微…...

Qwen3.5-4B-Claude推理模型在算法面试辅导中的实战:分步推导+代码示例生成

Qwen3.5-4B-Claude推理模型在算法面试辅导中的实战&#xff1a;分步推导代码示例生成 1. 模型介绍与核心能力 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个专门针对推理任务优化的AI模型&#xff0c;它基于Qwen3.5-4B架构&#xff0c;通过蒸馏训练强化了结构化…...