您的位置:首页 > 其它

CPU 虚拟化的常见方式

2012-06-07 12:32 120 查看
CPU虚拟化是将一个物理的CPU虚拟成多个虚拟CPU供虚拟机使用。

在传统的X86指令集中,CPU有4个特权级(0-3),第0级用来运行操作系统,拥有最高的特权,第3级用来运行应用程序,拥有最低的特权级。

虚拟机运行的过程中,通常VMM作为管理组件,运行在宿主机的操作系统中,拥有最高特权级别,而虚拟机上的操作系统就职能运行在第3级别了。

但是,操作系统中的某些指令,只能运行在最高特权级别,因此运行在第3级别的guest操作系统如何去执行那些只能在第0级才能运行的特权指令,就成为一个急需解决的问题。

根据实现机制的不同,这一过程分为三类:

(1)基于模拟执行的CPU虚拟化,也就是所谓的全虚拟化。

当VMM捕获到guest操作系统需要执行的特权指令时,用本地物理CPU的指令对该特权指令进行模拟运行,并将结果返回给guest操作系统。

这中方式的一个优点就在于,它可以虚拟出与本地物理CPU指令集不同的虚拟CPU

如kvm, vmware

(2)操作系统辅助虚拟化,也就是所谓的半虚拟化

将guest操作系统中的特权指令通过hypercall的方式进行改写,类似于系统调用

这种方式需要修改guest操作系统,

如xen

(3)硬件支持的虚拟化

现如今常见的处理器都支持,intel为 Intel VT-x, AMD 为 SVM

在通常的CPU基础之上,增加了一个新的模式,通过CPU模式的切换来执行那些特权指令。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: