现代卫生信息技术与应用
上QQ阅读APP看书,第一时间看更新

三、平台虚拟化技术

(一)全虚拟化

全虚拟化是虚拟机模拟完整的底层硬件,包括处理器、物理内存、时钟、外设等,使原始硬件操作系统或其他系统软件完全不做修改就可以在虚拟机中运行。操作系统与真实硬件之间的交互是通过一个预先规定的硬件接口进行的,全虚拟化VMM以完整模拟硬件的方式提供全部接口(同时还必须模拟特权指令的执行过程)。例如,x86体系结构中对操作系统切换进程页表的操作,真实硬件通过提供一个特权CR3寄存器实现该接口,操作系统只需执行“mov pgtable,%%cr3”汇编指令即可,全虚拟化VMM必须完整模拟该接口执行的全过程。如果硬件不提供虚拟化的特殊支持,该模拟过程将十分复杂。一般VMM需运行在最高优先级来完全控制主机系统,而Guest OS需要降级运行,无法执行特权操作。Guest OS执行前面的特权汇编指令时,若主机系统产生异常,执行控制权将重新从Guest OS转到VMM中。VMM事先为Guest OS分配一个变量作为影子CR3寄存器,将pgtable代表的客户机物理地址填入影子CR3寄存器,然后VMM需要将pgtable翻译为主机物理地址并填入物理CR3寄存器,最后返回到Guest OS中,随之VMM将处理复杂的Guest OS缺页异常(page fault)。比较著名的全虚拟化VMM 有Microsoft Virtual PC、VMware Workstation、Sun Virtual Box、Parallels Desktop for Mac和Qemu。

(二)超虚拟化

超虚拟化是一种修改Guest OS部分访问特权状态代码以便直接与VMM交互的技术。超虚拟化虚拟机中部分硬件接口以软件形式提供给客户机操作系统,可以通过Hypercall(VMM提供给Guest OS的直接调用,与系统调用类似)的方式提供。例如Guest OS把切换页表的代码修改为调用Hypercall直接完成修改影子CR3寄存器和翻译地址的工作。由于不需要产生额外的异常和模拟部分硬件执行流程,超虚拟化可大幅度提高性能,著名的VMM有Denali和Xen。

(三)硬件辅助虚拟化

硬件辅助虚拟化是借助硬件(主要是主机处理器)支持实现高效的全虚拟化。如有了Intel-VT技术的支持,Guest OS和VMM的执行环境将自动完全隔离。Guest OS有自己的全套寄存器,可以直接运行于最高级别。Intel-VT和AMD-V是目前x86体系结构上可用的两种硬件辅助虚拟化技术。

(四)部分虚拟化

部分虚拟化是通往全虚拟化的里程碑,最早出现在第一代分时系统CTSS和IBM M44/44X实验性分页系统中。VMM只模拟部分底层硬件,因此客户机操作系统不做修改是无法在虚拟机中运行的,其他程序可能也需要进行修改。

(五)操作系统级虚拟化

传统操作系统中所有用户进程本质上都运行在同一个操作系统实例,因此内核或应用程序的缺陷可能影响其他进程。操作系统级虚拟化是一种在服务器操作系统中使用的轻量级技术,内核通过创建多个虚拟操作系统实例(内核和库)隔离不同进程,不同实例中的进程完全不了解对方的存在。著名的有Solaris Container、FreeBSD Jail和OpenVZ等。
以上分类不是绝对的,虚拟化软件通常融合多项技术。例如全虚拟化VMM——VMware Workstation使用动态二进制翻译技术将对特权状态的访问转换为对影子状态的操作,避免低效Trap-And-Emulate的处理方式,而超虚拟化是静态修改程序代码。超虚拟化如果可以利用硬件特性,将很大程度上简化虚拟机管理,同时还可保持较高性能。