云计算:CPU虚拟化

云计算:CPU虚拟化

(1)CPU共有两种状态:内核态和用户态。
CPU逻辑划分列4类ring(环):ring0、ring1、ring2、ring3,其中ring0属于内核态,ring1\2属于服务态,ring3属于用户态
不同的ring有不同的指令和指令集。
(2)在非虚拟化的架构中,操作系统内核(os-kernel)可以调用内核态(ring0)指令和资源,普通的APP只能调用用户态(ring3)指令和资源。
(3)在虚拟化架构中:
由hypervisor\VMM负责调用内核态指令和资源,但是虚拟OS-kernel也需要访问调用内核态资源。
2、经典虚拟化(RISC)
特点:
敏感指令全部都是特权指令(ring0);
原则上只有VMM\Hypersion可以发布ring0指令;
工作过程(如果guest os要发送特权指令):
第一步 guest os降级为ring1(降级模式)
第二步 guest os发送特权指令(ring0)给CPU硬件
第三步 因为CPU认为 guest os为ring1状态,因此CPU硬件发送Trap告警给VMM(陷入模式)
第四步 VMM代替 guest os发送ring0指令给CPU完成内核态命令
在这里插入图片描述
3、全虚拟化(X86)
全虚拟(full virtual\FV):VMware技术,优点:不需要修改guestos内核,缺点:硬件模拟仿真,需要二进制翻译,效率低
特点:
19条敏感指令不是特权指令:
原则上只有VMM\Hypersion可以发布ring0指令;
如果guest os发送的是敏感指令(ring3),CPU不会阻止,但敏感指令会影响计算机全局状态会导致计算机出现问题;
(1)软件模拟全虚拟化:通过emulator软件模拟仿真ring0指令调用内核态资源,实际模拟的指令并非是ring0指令,是ring1指令(特权降级)。模拟软件有vmware(闭源)、qemu(开源)。
工作过程(如果guest os要发送特权指令和敏感指令):
第一步 guest os降级为ring1
第二步 guest os发送特权指令和敏感指令给VMM中的模拟软件vmware\qemu
第三步 模拟软件将敏感指令和特权指令模拟为ring0指令发送给CPU完成内核态任务(非敏感非特权指令不通过模拟软件直接发送给CPU)
在这里插入图片描述
(2)硬件辅助虚拟化
特点:服务器的CPU必须支持硬件辅助虚拟化;
通过硬件辅助虚拟化功能VMM分成两种目录,分别是root-mode和non-root-mode,把敏感指令放在root-mode里面,把其他指令(ring0和ring3)放在non-root-mode;
在bios中开启inter-vt
工作过程(如果guest os要发送特权指令和敏感指令):
第一步 guest os发送指令给cpu支持硬件辅助功能的VMM
第二步 VMM通过硬件辅助功能根据不同的指令存放到不同的目录内,区分开敏感指令、ring0指令和ring3指令
第三步 VMM发送指令给CPU完成内核态任务。
4、CPU半虚拟化
直接修改geust kernel:不通过降级,直接将guest kernel的敏感非特权指令和状态变成ring0,直接对VMM申请调用(hypercall超级调用),VMM想CPU调用资源。
半虚拟(para virtual\PV):xen技术,优点:直接调用CPU资源,缺点:需要修改questos内核,闭源的os无法使用半虚拟化(比如windows的操作系统)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值