KVM介绍
KVM内置于Linux,是内核模块;KVM可以直接利用Linux来做一些在xen中需要利用hypervisor来做的事情,比如任务调度,内存管理等等。所以相比之下,KVM更轻量,更易管理,并且版本更新也可以随着内核的更新。
KVM架构
qemu通过libkvm应用程序接口,用fd通过ioctl向设备驱动来发送创建,运行虚机的命令。设备驱动kvm接下来解析命令。
虚机运行时,有三种模式:
-客户模式:执行非io的客户代码,虚机在这个模式下运行;
-用户模式:代表用户执行io操作,qemu运行在这个模式;
-内核模式:实现客户模式的切换,,kvm工作在这个模式。
XEN介绍
xen是运行于Linux上的一个应用。

XEN架构
做为对hypervisor的扩充,提供对整个平台的管理,直接拥有系统硬件输入输出设备。domain1是一个设备驱动域,拥有部分物理设备。从domain2开始,是普通的用户虚拟化域,不具有任何物理设备,而是通过虚拟设备向位于domain0的后端设备驱动程序申请服务,从而实现对设备的访问。
Xen的组成分为三部分:
(1) 硬件层之上的Xen Hypervisor层:负责直接驱动CPU和Memory这些基础硬件,为其它所有虚拟机提供CPU、内存、Interrupt(中断)管理,并且还提供了HyperCall的调用,如上图domain0。
(2) 第一个虚拟机: 此虚拟机在Xen中称为特权虚拟机: 它有整个虚拟化环境的访问权,并负责创建用户级虚拟机,并为其分配I/O设备资源.它的Kernel是经过特别修改的VM,它可以直接访问IO硬件也可访问其它用户VM,如上图domain1。
(3) 其它众多虚拟机: 这些虚拟就是用户级虚拟机: 它们是实际提供给用户使用的虚拟机,也是相关隔离的VM,如上图domain2。
.
.
.
需要注意:Xen支持三种虚拟化,当然此处的虚拟化特指CPU的半虚拟化或完成虚拟化.
<1> Para-Virtualization(半虚拟化): 在这种虚拟化中,CPU不要求支持HVM特性,但GuestOS的Kernel必须允许被修改.否则将无法支持该GuestOS运行在DomU中。这是因为必须让GuestOS知道自己是运行在虚拟化环境中,这样它在进行特权指令操作硬件时,会直接发起HyperCall向Xen Hypervisor发起请求来完成所谓的硬件操作。在PV技术下,能够运行在DomU上的OS包括:
Linux, NetBSD, FreeBSD, OpenSolaris
<2> HVM(基于硬件的完全虚拟化): 此种虚拟化需要借助于Intel的VT-x 或 AMD的AMD-v 的HVM技术及Qemu的IO硬件模拟,才能支持GuestOS的kernel不修改,就可直接被DomU支持。
这是因为Xen Hypervisor是运行在CPU的环-1上的,GuestOS的kernel是运行在CPU的环0上,GuestOS向环0上发起的所有假特权指令调用都由CPU直接捕获,并交由环-1上的Xen Hypervisor处理,最后由Xen代其执行这样DomU若发起关机指令时,Xen仅会切断该GuestOS的电源,而不会影响其它GuestOS。在HVM技术下,能够运行在DomU上的OS包括: 所有支持X86架构的OS.
<3> PV on HVM: I/O设备半虚拟化运行,CPU运行于HVM模式
此中方式是为了解决HVM方式中IO设备也必须完全模拟而带来的性能低下问题;通过让CPU进行完全虚拟化,而I/O设备则采用在GuestOS中安装相应的IO驱动实现IO的半虚拟化的方式来提高效率。在PV on HVM的技术下,能够运行在DomU上的OS包括:只要OS能驱动PV接口类型的IO设备,即可.
车载芯片设计:http://www.elecfans.com/d/929038.html


















