《QEMU/KVM源码分析与应用》读书笔记2 —— 第1章 QEMU与KVM概述
2023-09-14 09:15:40 时间
1.2 QEMU与KVM架构介绍
1.2.1 QEMU与KVM发展历史
知识提炼:
- QEMU和KVM的关系
QEMU和KVM虽然经常被放在一起提及,但其实两者的关系完全可以解耦合。
- QEMU历史及简介
QEMU最开始是由法国程序员Fabrice Bellard开发的一个模拟器。QEMU能够完成用户模拟和系统虚拟化模拟。用户模拟指的是QEMU能够将为一个平台编译的二进制文件运行在另一个不同的平台;系统虚拟化模拟指的是QEMU能够模拟一个完整的系统虚拟机。QEMU能够模拟的平台众多,包括:x86、ARM、MIPS、PowerPC等。早期的QEMU都是软件摸你的,由于其性能不能满足要求,因此早期的云计算平台通常使用Xen作为其底层虚拟化平台。
- KVM发展历史及简介
以色列初创公司Qumranet基于新的虚拟化指令集实现了KVM,并推广到Linux内核社区。KVM本身是一个内核模块,导出了一系列的接口到用户空间,用户空间可以使用这些接口创建虚拟机。最开始KVM只负责最核心的CPU虚拟化和内存虚拟化部分,使用QEMU作为其用户态组件,负责完成大量外设的模拟,当时的方案被称为QEMU-KVM。KVM的具体设计与实现可以参考Avi Kivity等人在2007年发表的论文“KVM: The Linux Virtual MAchine Monitor”。
- 虚拟化支持
Intel和AMD在2005年左右开始在CPU层面提供对系统虚拟化的支持,叫作硬件虚拟化。Intel在x86指令集的基础上增加了一套VMX扩展指令VT-x,为CPU增加了新的运行模式,完成了x86虚拟化漏洞的修补。通过新的硬件虚拟化指令,可以非常方便地构造VMM,并且x86虚拟机中的代码能够原生地运行在物理CPU上。
1.2.2 QEMU与KVM架构
知识提炼:
- QEMU与KVM完整架构图
相关文章
- 如何查看搜狗浏览器应用的源码
- Flask请求和应用上下文源码分析
- 分析了10个垂直行业后,告诉你大数据应用面临哪些挑战
- 在C#代码中应用Log4Net(五)将Log4Net正确地封装在自己的类库中并进行调用
- java应用诊断工具bistoury本地源码编译、构建及启动完整步骤
- 在Form窗体中,this的应用
- 【STM32H7教程】第84章 STM32H7的SPI 总线应用之SPI Flash的MDK下载算法制作
- dubbo源码分析(二):超时原理以及应用场景
- Chrome开发者工具对Vue应用的支持
- 一个实用的显示Visual Studio Code文件绝对路径的扩展应用
- SAP UI5 初学者教程之十 - 什么是 SAP UI5 应用的描述符 Descriptor 试读版
- 当年的Java考试:JAVA&移动应用&大数据-大三-社区疫苗接种管理系统(全部源码·保姆式呵护)
- 【Android 插件化】VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )
- 【Android 进程保活】应用进程拉活 ( 系统 Service 机制拉活 | Service 组件 onStartCommand 方法分析 | 源码资源 )
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | 加载 dex 文件 | 使用反射获取方法创建本应用的 dexElements | 各版本创建 dex 数组源码对比 )
- 2022年陕西省职业院校技能大赛“网络搭建与应用”赛项竞赛试题
- Android内核开发:在源码树中添加新的app应用
- 十、Fiddler抓包工具详细教程 — AutoResponder应用场景