虚拟化技术
随着计算机硬件技术的发展,物理资源的容量越来越大而价格越来越低,在既有架构的基础下,物理资源会不可避免地产生闲置和浪费。为了充分利用物理资源,提高使用效率,虚拟化技术应运而生。
虚拟化技术通过引入虚拟化层,对上提供虚拟的系统资源,对下管理真实的物理资源。
VMM(Virtual Machine Monitor),也叫Hypervisor,就是虚拟化层的具体体现。VMM运行的环境是真实的物理平台,称之为Host(宿主机),而模拟出来的平台通常称为Guest(客户机)。
虚拟化技术有多种实现方式,比如软件虚拟化和硬件虚拟化。
软件虚拟化和硬件虚拟化
虚拟化的本质可以归纳为截获计算单元对物理资源的直接访问,并将其重定向到虚拟资源池中,模拟。根据虚拟化层是通过纯软件的方法,还是利用物理资源提供的机制来实现这种“截获并重定向”,可以把虚拟化分为软件虚拟化和硬件虚拟化。
软件虚拟化
软件虚拟化即用纯软件的方法实现对物理资源访问的截获(intercept)和模拟(virtualize)。
Qemu是常见的软件虚拟化模拟器,它可以通过纯软件来模拟任何硬件。Qemu采用二进制指令翻译技术,Guest的指令会经过中间翻译,称为Host指定架构的代码,例如x86体系就翻译为其支持的代码形式。
由于所有的指令都是通过软件模拟的,因此性能往往比较差,但是可以做到在同一平台上模拟不同架构平台的虚拟机。
硬件虚拟化
硬件虚拟化即物理平台本身提供了对特殊指令的截获和重定向的硬件支持。
例如,支持虚拟技术的x86CPU带有特别优化过的指令集来控制虚拟过程,VMM利用这些指令集能够使Guest置于一种受限制的模式下运行,一旦Guest试图访问物理资源,硬件会暂停Guest的运行,将控制权交给VMM处理。VMM还可以利用硬件的虚拟化增强机制,将Guest在受限模式下对一些特定资源的访问,完全由硬件重定向到VMM指定的虚拟资源,整个过程不需要暂停Guest的运行和VMM软件的参与。
硬件虚拟化比如Intel的VT技术和AMD的AMD-V技术是其中的代表。
reference