CPU 虚拟化的常见方式

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模式的切换来执行那些特权指令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值