一、关于虚拟机技术的背景知识
1、Emulator和Virtualizer的区别
现在很多杀毒软件里面有所谓的智能脱壳功能,其实它就是用一个Emulator模拟器来解释执行机器指令,比如说x86的机器语言是一条一条来被翻译执行 的。而Virtualizer并不是由软件来模拟执行,而是使这个代码尽可能自然地在当前的处理器上运行,而虚拟机监控器只需要在某些特定时候进行干预, 比如说来处理一些特权指令操作。
Emulator中比较有名的一个是BOCHS,可能有一些朋友用它来进行过一些操作系统级的调试。这是一个开源的软件,在网上可以下载到。
Virtualizer比较有代表性的是VMware、VPC这些软件。
VMM是虚拟机管理器,也叫做虚拟机监控器,其实它就是一个软件层。这个软件层是在被虚拟执行的操作系统和真实的硬件环境间由软件构架的一套中间层,由它来负责对下面的硬件,比如CPU处理器、硬件等进行虚拟。我们后面还会看到对VMM的结构和工作原理的介绍。
2、Host OS和Guest OS
Host OS和Guest OS非常好理解,在虚拟机里运行的系统,我们称之为客操作系统。对于二型VMM架构它的主操作系统,我们叫做Host OS。
3、VMM的类型
下面我们介绍一下VMM的类型,有两种:一种是在裸机上的架构,第二种是混合型,就是有主操作系统的VMM,典型代表有:
- Type I VMM(Bare Metal):VMware ESX, Xen, MS Hyper-V
- Type II VMM(Hosted/Hybrid):VMware Workstation, MS VPC
图1描述的是I型VMM的结构。我们可以看到虚拟机监控器VMM是装在裸机上的,在这个上面我们会有多个并发运行的客操作系统Guest OS。
图1 I型VMM结构图
对 于有Host OS的II型VMM是图2这样的,虚拟机软件本身是Host OS的一部分,通过虚拟机软件,使VMM和Guest OS运行在同一个线性地址空间里来虚拟Guest OS的执行。另外VMM还有一个功能,从主操作系统的上下文空间向客操作系统的上下文空间进行切换,由它进行控制。