网站推广营销,阿里企业邮箱设置,在线拼图制作,电子商务网站关键技术《QEMU/KVM源码解析与应用》 - 王强
概述
虚拟化简介
虚拟化思想
David Wheeler#xff1a;计算机科学中任何问题都可以通过增加一个中间层来解决。
虚拟化思想存在与计算机科学的各个领域。 主要思想#xff1a;通过分层将底层的复杂#xff0c;难用的资源虚拟抽象为简…《QEMU/KVM源码解析与应用》 - 王强
概述
虚拟化简介
虚拟化思想
David Wheeler计算机科学中任何问题都可以通过增加一个中间层来解决。
虚拟化思想存在与计算机科学的各个领域。 主要思想通过分层将底层的复杂难用的资源虚拟抽象为简单用于的资源提供给上层使用。 comment驱动软件也是对设备的一种虚拟化进程是对CPU的一种虚拟化
机器码汇编到C语言再到高级语言本质也是一个不断虚拟化的过程将底层复杂的接口转变为上层容易使用的接口
虚拟机简介
虚拟机Virtual MachineVM 机机器只要能提供一个执行环境完成用户指定任务的对象都可以叫做机器。
最简单的虚拟机是进程 模拟器是另一种形式的虚拟机。模拟器可以使 为一种硬件指令集ISA编译的程序 运行在 另一种硬件指令集 上。 解释对程序的源ISA指令一条一条进行分析然后执行相应的ISA指令上的操作感觉有点像解释器 二进制翻译源ISA指令翻译为目标ISA上对应功能的指令再在目标ISA机器上执行 典型模拟器QEMU的用户态程序模拟Bochs
高级语言虚拟机在模拟器的基础上更进一步将源ISA和目的ISA完全分开 高级语言虚拟机一般会设计一套虚拟ISA 高级语言虚拟机的程序中没有任何具体物理ISA指令都是自己定义的虚拟的指令通常叫做字节码
一个想要运行这种虚拟ISA指令的物理ISA平台都需要实现一个虚拟机该虚拟机执行虚拟ISA指令到物理ISA指令的转换。 comment底层的load确实很重这就相当于每个平台都要实现一遍类似的指令映射表 程序员通过高级语言编写程序必须要考虑它运行的平台。
典型的高级语言虚拟机JVMpython虚拟机
进程模拟器高级语言虚拟机都只是提供了指令的执行环境 而系统虚拟机提供一个完整的系统环境。 虚拟机提供的完整系统环境中能够运行多个用户多个进程。 通过系统虚拟化技术可以在单个宿主机硬件平台上运行多个虚拟机每个虚拟机都有完整的虚拟出的硬件平台如虚拟的CPU 内存虚拟外设等虚拟机之间相互隔离。
管理全局的物理资源的软件叫做虚拟机监视器virtual machine monitorVMM VMM通过分时复用的方法让硬件资源在各个虚拟机之间进行分配 VMM ----- 硬件资源 ----- 虚拟机 操作系统 ------- CPU资源 ------ 进程
典型的虚拟化方案
VMware WorkstationVMwareHyperV微软Virtual Box德国公司开发甲骨文收购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