qemu

2.5 QEMU设备模型


QEMU本身并不是KVM的一部分,其自身就是一个著名的开源虚拟机软件。与KVM不同,QEMU虚拟机是一个纯软件的实现,所以性能低下。但是,其优点是在支持QEMU本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机并不是同一个架构。作为一个存在已久的虚拟机,QEMU的代码中有整套的虚拟机实现,包括处理器虚拟化、内存虚拟化,以及KVM使用到的虚拟设备模拟(比如网卡、显卡、存储控制器和硬盘等)。


为了简化开发和代码重用,KVM在QEMU的基础上进行了修改。虚拟机运行期间,QEMU会通过KVM模块提供的系统调用进入内核,由KVM 模块负责将虚拟机置于处理器的特殊模式运行。遇到虚拟机进行输入输出操作,KVM模块会从上次的系统调用出口处返回QEMU,由QEMU来负责解析和模拟这些设备。


从QEMU角度来看,也可以说QEMU使用了KVM模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化的加速,从而极大地提高了虚拟机的性能。除此之外,虚拟机的配置和创建,虚拟机运行依赖的虚拟设备,虚拟机运行时的用户操作环境和交互,以及一些针对虚拟机的特殊技术(诸如动态迁移),都是由QEMU自己实现的。


从QEMU和KVM模块之间的关系可以看出,这是典型的开源社区在代码共用和开发项目共用上面的合作。诚然,QEMU可以选择其他的虚拟机或技术来加速,比如Xen或者KQEMU;KVM也可以选择其他的用户空间程序作为虚拟机实现,只要它按照KVM提供的API来设计。但是在现实中,QEMU与KVM两者的结合是最成熟的选择,这对一个新开发和后起的项目(KVM)来说,无疑多了一份未来成功的保障。


你可能感兴趣的:(虚拟机,技术,动态,控制器,处理器)