完全虚拟化
在完全虚拟化中,Guest OS就像在运行在正常的服务器上一样,完全不知道自己运行在虚拟化平台上,可以向机器发出指令,Guest OS发出的指令,全程由VMM接受,再转发送给CPU,但对于一些敏感的指令,VMM会过滤掉。
列如Guest OS发出power off的指令,如果不经过过滤CPU会直接关闭电源。这里VMM会接受并修改这个指令,再转发给CPU,仅让CPU关闭虚拟机的电源。
硬件虚拟化
硬件虚拟化是由CPU厂商直接在芯片上提供了对虚拟化的支持。比如Intel的vt和AMD的amd-v都为CPU增加了新的执行模式。Intel对指令集重新设计,使得原本不能通过先陷入后模拟的方式执行的指令都可以顺利执行。开启vt-x后,可以把一个CPU逻辑上转换为多个CPU。新的指令集增加了Root模式位于Ring 0的下面,可以理解为在硬件级别增添了Ring -1,让VMM运行Ring -1(相当于普通服务器Ring 0),而Guest OS运行在Non-Root模式——Ring 0。当切换到Guest模式时,CPU提供了先前完整的特权等级,让Guest OS可以不加修改的运行在物理的CPU上。此时,VMM通过一个位于内存的数据结构(Intel称为VMCS,AMD称为VMCB)来控制Guest OS与Host OS的交互,以完成整个平台的虚拟化
笔者现在也就学了这么多,希望大家有什么多指出来,大家一起学习
原文地址:http://blog.51cto.com/12598157/2121149