虚拟化的含义很广泛,将任何一种形式的资源抽象成另一种形式的技术都是虚拟化技术,比如进程的虚拟地址空间,就是把物理内存虚拟成多个内存空间(参考这篇文章)。相对于进程级的虚拟化,虚拟机是另外一个层面的虚拟化,它所抽象的是整个物理机,包括CPU、内存和I/O设备。
在一台物理机上可以模拟出多台虚拟机(Virtual Machine,简称VM),每个虚拟机中都可以运行一个操作系统(OS)。提供虚拟化的平台被称为VMM(Virtual Machine Monitor),在其上运行的虚拟机被称为guest VM(客户机)。根据VMM支持的虚拟机制的不同,guset VM的运行模式可分为完全虚拟化(Full Virtualization)和类虚拟化(Para Virtualization)。
【完全虚拟化】
如果一个基于硬件运行(native)的OS不需要修改任何代码就可以直接跑在VMM上,也就是guest OS根本感知不到自己运行在一个虚拟化环境中(可以说VMM是骗术高明的),这种就被称为“完全虚拟化”。在这种模式下,VMM需要正确处理guest所有可能的指令。
最简单直接的方法就是,VMM对guest运行过程中的每一条指令都进行解释和执行,模拟出这条指令执行的效果,这种方法既适用于和VMM相同体系结构的guest,也能用于模拟和VMM不同体系结构的guest(比如物理CPU是x86的