x86硬件辅助虚拟化之虚拟机与VMM(1)
理清虚拟机和虚拟机监视器的类别
大家在谈到虚拟机时可能会有不同的看法:编程的朋友肯定对JVM不会陌生,JVM本身就是一种虚拟机;而喜欢系统虚拟软件的朋友则对VMware、Xen和微软这些虚拟化厂家的虚拟化产品有着更实际的理解。大家只知道它们是不同类别的虚拟机,但是它们之间是如何分类的呢?哪种虚拟机与Intel VT和AMD-V的关联性最大呢?
两类不同的虚拟机
根据笔者的理解,虚拟机可以分为进程虚拟机和系统虚拟机两大类,进程虚拟机支持ABI——用户指令加上系统调用;系统虚拟机则支持完整的ISA——包括用户指令和系统指令。在这个分类方法中,又可以根据客户机和本地机(Host Machine,在虚拟化资料中也常常称其为宿主机)是否使用了相同的ISA进行次级细分。
虚拟机大致可分为两大类,并可进一步细分
为了简化讲解,我们只考虑和硬件虚拟化关系最为密切的、在相同ISA情况下的系统虚拟机(右图中黑框圈选的地方,因为大部分读者接触不到不同ISA指令集转换的情况)分类情况。前面我们提到的VMware、Xen的虚拟软件产品都属于系统虚拟机类别,而Intel VT和AMD-V等x86硬件辅助虚拟化技术能够提升系统虚拟机的执行性能。