zl程序教程

您现在的位置是:首页 >  工具

当前栏目

《QEMU/KVM源码分析与应用》读书笔记2 —— 第1章 QEMU与KVM概述

应用源码 分析 概述 读书笔记 kvm QEMU
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”。

  • 虚拟化支持

IntelAMD2005年左右开始在CPU层面提供对系统虚拟化的支持,叫作硬件虚拟化。Intel在x86指令集的基础上增加了一套VMX扩展指令VT-x,为CPU增加了新的运行模式,完成了x86虚拟化漏洞的修补。通过新的硬件虚拟化指令,可以非常方便地构造VMM,并且x86虚拟机中的代码能够原生地运行在物理CPU上。

1.2.2 QEMU与KVM架构

知识提炼: 

  • QEMU与KVM完整架构图