Cloud ❀ CPU虚拟化技术


CPU虚拟化技术

CPU虚拟化技术把物理CPU抽象成虚拟CPU,任何时刻一个物理CPU只能运行一个虚拟CPU指令;
CPU有四个运行级别,分别为Ring 0、Ring 1、Ring 2、Ring 3;
其中Ring 0具有最高权限,可以执行任何指令而没有限制,权限从0~3依次递减,应用程序一般运行在Ring 3级别,操作系统内核态代码运行在Ring 0级别,因为它需要直接控制和修改CPU的状态。虚拟化层运行在Ring 0级别,而客户操作系统只能运行在Ring 0以上的级别。
Cloud ❀ CPU虚拟化技术

1.全虚拟化技术(Full-virtualization)

全虚拟化技术采用二进制代码动态翻译技术(Dynamic Binary Translation)来解决客户操作系统的特权指令问题;
二进制代码动态翻译技术:指虚拟机运行时,在敏感指令前插入陷入指令,将执行陷入到虚拟机监视器中,虚拟机监视器会将这些指令动态转换成可以完成相同功能的指令序列后再执行,需要占用一定的性能资源。

2.半虚拟化技术(Para-virtualization)

半虚拟化技术通过修改客户操作系统来解决虚拟机执行特权指令的问题;
半虚拟化技术中被虚拟化平台托管的客户操作系统需要修改其操作系统,将所有敏感指令替换为对底层虚拟化平台的超级调用(Hypercall)
半虚拟化技术和虚拟化平台必须兼容,否则无法操控宿主机。

3.硬件辅助虚拟化技术(Intel VT/AMD-V) - 唯一的硬件解决方案

支持虚拟化技术的CPU添加了新的指令集和处理器运行模式来完成与CPU虚拟化相关的功能;
支持硬件辅助虚拟化技术的CPU增加了一台名为虚拟机扩展(VMX)的指令集,该指令集包括十条左右的新增指令来支持与虚拟化相关的操作;
Intel VT 定义了两种运行模式:根模式(root)非根模式(non-root)
虚拟化平台运行在根模式,客户操作系统运行在非根模式,由于硬件辅助虚拟化技术支持客户操作系统直接在其上运行,无需进行二进制翻译或超级调用,因此减少了相关的性能开销,简化了虚拟化平台的设计。
Cloud ❀ CPU虚拟化技术