CPU虚拟化是计算机虚拟化的核心,CPU虚拟化有很多种方式,概括的分为三类:软件虚拟化、类虚拟化以及完全硬件虚拟化,依次性能越来越好。
1.CPU的软件虚拟化
操作系统设计的目标就是直接在裸机硬件上运行,因此自然会假定自己完全“拥有”所有的计算机硬件。x86架构为操作系统和应用程序提供了四个级别的特权,分别称为Ring 0/1/2/3,以此管理对计算机硬件资源的访问。
图 3.28 CPU虚拟化
如图 3.28(a)所示,无虚拟化的场景。用户级应用程序通常在Ring 3中运行,操作系统要想直接访问内存和硬件,就必须在Ring 0中执行其特权指令。
CPU的软件虚拟化大概有三类:
- 解释执行。也称全软件模拟,即取出一条指令,模拟出这条指令执行的效果,再继续下一条指令。由于每条指令都要模拟,也相当于虚拟机的每条指令都会“陷入”Hypervisor,因此解释执行的性能非常差。
- 扫描与修补。让大多数的指令在物理CPU直接运行