基于硬件的 CPU 虚拟化
上面的这种截获再模拟的纯软件的虚拟化方式,势必是性能非常低的。那怎么样提高性能呢,有一种改进
的方式是修改 Guest OS 中关于特权指令的相关操作,将其改为一种函数调用的方式,让 VMM 直接执
行,而不是截获和模拟,这样就能在一定程度上提高性能。
但这种方式并不通用,要去改 Guest OS 的代码,只能看作是一种定制。为了能够通用,又能够提高性
能,就只能从硬件上去做文章了。所以,后来,以 Intel 的 VT-x 和 AMD 的 AMD-V 为主的硬件辅助的
CPU 虚拟化就被提出来(Intel VT 包括 VT-x (支持 CPU 虚拟化)、EPT(支持内存虚拟化)和 VT-
d(支持 I/O 虚拟化)。
CPU 硬件辅助虚拟化在 Ring 模式的基础上引入了一种新的模式,叫 VMX 模式。它包括根操作模式
(VMX Root Operation)和非根操作模式(VMX Non-Root Operation)。
这两种模式都有 Ring 0 – Ring 3 的特权级。所以,在描述某个应用程序时,除了描述其属于哪个特权级,
还要指明其处于根模式还是非根模式。
引入这种模式的好处就在于,Guest OS 运行在 Ring 0 上,就意味着它的核心指令可以直接下达到硬件层
去执行,而特权指令等敏感指令的执行则是由硬件辅助,直接切换到 VMM 执行,这是自动执行的,应用
程序是感知不到的,性能自然就提高了。
KVM 是一种硬件辅助的虚拟化技术,支持 Intel VT-x 和 AMD-v 技术。
学员评价