x86虚拟化技术细节
1. CPU虚拟化的目标是使虚拟机上的指令能被正确地执行,而且效率接近物理机。
2. 内存虚拟化的目标是做好虚拟机内存空间之间的隔离,是每个虚拟机都认为自己拥有了整个内存地址,并且效率也能接近物理机。
3. I/O虚拟化的目标是不仅让虚拟机访问到其所需要的I/O资源,而且要做好它们,之间的隔离工作,更重要的是减轻由于虚拟化所带来的的开销。
x86虚拟化技术 | 全虚拟化 | 半虚拟化 | 硬件辅助虚拟化 |
---|---|---|---|
CPU虚拟化 | 主要采用优先级压缩(Ring Compression)和二进制代码翻译技术(Binary Translation)。优先级压缩能让VMM和Guest运行在不同的特权级下,对x86架构而言,就是VMM运行在最高特权级Ring 0下,Guest的内核代码运行在Ring 1下,Guest的应用代码运行在Ring 3下。通过这种方式能让VMM截获一部分在Guest上执行的特权指令,并对其进行虚拟化。但是有一些对虚拟化不友好的指令则需要二进制代码翻译来处理,它通过扫描并修改Guest的二进制代码将那些难以虚拟化的指令转化为支持虚拟化得指令。 | 通过修改Guest OS的代码,使其将那些和特权指令相关的操作都转换为发给VMM的Hypercall(超级调用),且Hypercall支持批处理和异步这两种优化方式,使得通过Hypercall得到近似于物理机的速度。 | 主要包含Intel的VT-x和AMD的AMD-V两种技术,且这两种技术在核心思想上非常相似,都是通过引入新的指令和运行模式,让VMM和Guest OS分别运行在其合适的模式下。实现方面,VT-x支持两种处理器工作方式:第 |