虚拟化(Virtualization)是资源的逻辑表示,它不受物理限制的约束。具体的,虚拟化技术的实现形式是在系统中加入一个虚拟化层,虚拟化层将下层的资源抽象成另一种形式的资源,提供给上层使用。通过空间上分割、时间上分时以及模拟,虚拟化可以将一份资源抽象成多份。反过来,虚拟化也可以将多份资源抽象成一份。虚拟化技术以各种形式存在已经有四十年之久了,目前出现了网络虚拟化、微处理器虚拟化、文件虚拟化和存储虚拟化等技术。
1.1 形形色色的虚拟化
为了降低系统设计的复杂性,计算机系统被设计成自上而下的抽象层次结构,每一个层次都向上一层次呈现一个抽象,并且每一层只需知道下层抽象的接口,而不需要了解其内部运作机制。这样,每一层只需要考虑本层的设计以及相邻层间的交互。例如,操作系统所看到的硬件是一个硬件抽象层,而不需要理解硬件的布线或者电气特性等。

硬件抽象层(Hardware Abstraction Layer, HAL)是计算机中软件所能控制的硬件的抽象接口,通常包括CPU的各种寄存器、内存管理模块、I/O端口以及内存映射的I/O地址等。API抽象层是一个进程所能控制的系统功能的集合,包括创建新进程、内存申请、归还、进程间同步与共享、文件系统和网络操作系统等。
本质上,虚拟化是由位于下层的软件模块,通过向上层软件模块提供一个与它原先所期待的运行环境完全一致的接口的方法,抽象出一个虚拟的软件或硬件接口,使得上层软件可以直接运行在虚拟的环境上。