(1)英特尔 虚拟化技术 专为 虚拟机 监视器(VMM)提供的全新特权空间,可支持未经修改的 操作系统 和应用在专门为它们设计的环境中运行,从而简化硬件调用。
(2)通过硬件底层 指令集 来支持 虚拟机 监视器(VMM)与已安装Guest OS(虚拟机上的 操作系统 )之间的切换,使得 虚拟化技术 更加简单、高效、可靠。
(3)虚拟机监视器(VMM)和已安装的Guest OS(虚拟机上的 操作系统 )的 处理器 状态信息保留在专用 内存地址 空间中,这样可以缩短各个操作系统访问硬件之间的间隔时间,同时提高了各个虚拟机上的操作系统之间的 安全 隔离性。

实现方式

虚拟化有两种实施方式:传统的纯 软件 虚拟化方式和更新的硬件辅助虚拟化方式。在保护模式下,X86 处理器 一共有4个不同优先级,术语称为Ring,从Ring 0-Ring3。Ring 0的优先级最高,Ring 3最低。Ring 0用于 操作系统内核 , Ring 1和Ring 2用于操作系统服务,Ring 3用于应用程序。
位于Ring 0特权空间的 操作系统 可以优先访问各种硬件资源。传统的 虚拟化技术 是在Ring 0 中运行一个称为 虚拟机 监视器(VMM)的 软件 中间层,以负责控制和排列各个分区访问硬件资源的优先顺序。它要求在 软件 堆栈的较高层运行 操作系统 ——通常是在Ring 1或者与系统应用共用Ring 3。
由于传统的纯 软件 实现方式在测试、验证和维护每款新 操作系统 和相关补丁方面,付出了大量的时间和资金, 同时二进制码翻译需要消耗 处理器 的很多计算资源。纯 软件 虚拟化运行时的开销会造成系统运行速度较慢,有数据表明其引起的系统性能下降可能达5%-20%。

VT的目的

VT的目的是在尽可能最小化程序员痛苦的同时尽可能多的增加“virtualization holes”(虚拟化孔)。这种解决方案中,VT-X针对X86而VT-i针对Itanium,分别引入了一种新的模式针对不同的CPU.这里我们主要来看看VT-X,实际上VT-i的功能与VT-X有很多相同的地方。
这种新的模式被称为VMX,并且引入了一个虚拟化机 监控器VMM运行于其中。它被设定在R0级别下,你可以认为是R-1级或者看成是在环的旁边运行。 主机操作系统和所有的程序在VMX模式中运行,与此同时VMM运行在VMX根模式中。
任何一个运行在VMX模式下的 操作系统,都拥有所有运行于非VT系统中的一般操作系统的功能和特性。它也处在R0级别中,与平常一样有权利处理每一件事情,而且并不知道有什么东西正在它的旁边运行。当情况得到授权,CPU进入VMX根模式,VMM就可以切换到其他一个运行在另一VMX实例的 操作系统。这些切换被称做VM登录和VM退出。
VT技术所表现出来的不可思议的地方就在于它将从VMX模式到VMX根模式(或从VMX根模式到VMX模式)的登录和退出处理易于操作。一旦 主机操作系统被涉及到,那它一定是独自处在自己的世界里的,你必须保存虚拟化世界的完整状态并当你返回时重新载入它。虽然在VT里还有很多事物要去处理,但它被设计为一项任务,所以客观地说它实际是一个简单而并不费力的进程。
 
虚拟化技术大概可以分为以下四类:
硬件仿真
完全虚拟化
半虚拟化
操作系统级的虚拟化
 
硬件仿真:最复杂的虚拟化实现技术就是硬件仿真,在这种方法中,可以在宿主系统上创建一个硬件 VM 来仿真所想要的硬件。使用硬件仿真的主要问题是速度会非常慢,因为每条指令都必须在底层硬件上进行仿真。但是使用硬件仿真,您可以在一个 ARM  处理器主机上运行为 PowerPC设计的 操作系统,而不需要任何修改。硬件仿真的产品有Bochs和qemu。
 
操作系统级的虚拟化:这种技术在 操作系统本身之上实现 服务器的虚拟化。这种方法支持单个 操作系统,并可以将独立的 服务器相互简单地隔离开来。比如Virtuozzo。好像应用不是很多?
而市面上主要的产品都是完全虚拟化或者半虚拟化的。
 
完全虚拟化(full virtualization):这种模型使用一个 虚拟机,它在客户 操作系统和原始硬件之间进行协调。"协调"在这里是一个关键,因为 VMM 在客户 操作系统和裸硬件之间提供协调。特定受保护的指令必须被捕获下来并在 hypervisor 中进行处理,因为这些底层硬件并不由 操作系统所拥有,而是由操作系统通过 hypervisor 共享。虽然完全虚拟化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因为中间经过了 hypervisor 的协调过程。完全虚拟化的最大优点是 操作系统无需任何修改就可以直接运行。惟一的限制是 操作系统必须要支持底层硬件。
完全虚拟化又分为传统的和硬件辅助的。传统的完全虚拟化, 虚拟机运行在操作系统之上,虚拟机管理程序本身运行在 cpu的Ring 0,虚拟的Guest OS则运行在Ring 1(为了避免Guest OS破坏Host OS,Guest OS必须运行 在低于Ring 0的权限)。但是这样一来Guest的兼容性会受到影响,并且原来Guest OS要在Ring 0上执行的指令都必须经过hypervisor翻译才能运行,速度会有所下降。而硬件辅助的完全虚拟化需要 cpu硬件支持,有 intel的VT和AMD的 AMD-V两种技术,只有支持这两种技术的cpu才可以使用。硬件辅助的虚拟化把 虚拟机管理程序本身放到比Ring 0还低的模式运行(比如Ring -1),而把Guest OS放到Ring 0,这样兼容性得到了提高,不过因为第一代硬件 虚拟技术(VT和AMD-V)实现上还不够成熟,所以效率上并不比传统的完全虚拟化更高(只能是某几方面高某几方面低)。传统的完全 虚拟化技术已经发展了多年,其开发比较复杂,以前的技术一般都是为x86开发的,对于x64不好用,x64上有了VT和 AMD-V之后,估计厂商已经不愿意再花力量为x64开发传统的 虚拟机了,所以想要运行64位的Guest OS,都需要VT或AMD-V的支持()。
 
半虚拟化(para virtualization):半虚拟化可以提供极高的性能,它与完全虚拟化有一些类似。这种方法使用了一个 hypervisor 来实现对底层硬件的共享访问,还将与虚拟化有关的代码集成到了 操作系统本身中。与硬件辅助的完全虚拟化有一点相似是hypervisor运行在Ring -1,而Guest OS运行在Ring 0上。但是半虚拟化有一个缺点是必须修改客户 操作系统,因为半虚拟化为了提高效率,必须要让Guest OS本身意识到自己运行在 虚拟机上,所以在Guest OS的内核中需要有方法来与hypervisor进行协调,这个缺点很大的影响了半 虚拟化技术的普及,因为Linux等系统可以修改,而其它不能修改的系统就不能用了。