Instruction Set Architecture (ISA) Level指令级虚拟化
指令虚拟化是指指令集层次上实现虚拟化,即将某个硬件平台上的二进制代码转换为另一个平台上的二进制代码,实现不同指令集间的兼容,也被称作“二进制翻译”。
Hardware Abstraction Level (HAL)硬件级虚拟化
CPU 虚拟化
-
CPU 全虚拟化
主要采用优先级压缩技术(Ring Compression)和 二进制代码翻译技术(Binary Translation)。优先级压缩技术让VMM和Guest 运行在不同的特权级下。对X86架构而言,即VMM运行在最高特权级别Ring 0下,Guest OS 运行在Ring 1 下,用户应用运行在Ring 3下。因此 Guest OS 的核心指令无法直接下达到计算机系统硬件执行,而是需要经过 VMM 的捕获和模拟执行(部分难以虚拟化的指令需要通过 Binary Translation技术进行转换)。
-
CPU 半虚拟化
主要采用Hypercall 技术。Guest OS 的部分代码被改变,从而使Guest OS会将和特权指令相关的操作都转换为发给VMM的Hypercall(超级调用),由VMM继续进行处理。而Hypercall支持的批处理和异步这两种优化方式,使得通过Hypercall 能得到近似于物理机的速度。
- Advantages: near‐native performance Improved performance due to exposure of real hardware with the cost of one time guest OS modification.
- Disadvantages:
Guest OS are limited to open source systems such as Linux.Xen supported guest OS: Linux, NetBSD, FreeBSD, OpenSolaris and Novell Netware operating systems (See, no Microsoft OS as a guest OS)
-
CPU硬件辅助虚拟化技术
目前主要有Intel 的VT-x和AMD的AMD-V这两种技术。其核心思想都是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT 模式和非ROOT模式)下,且Guest OS 运行在Ring 0 下。通常情况下,Guest OS 的核心指令可以直接下达到计算机系统硬件执行,而不需要经过VMM。当Guest OS执行到特殊指令的时候,系统会切换到VMM,让VMM来处理特殊指令。
CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
内存虚拟化
IO虚拟化