linux cpu虚拟化,虚拟化的理论-CPU虚拟化

二进制翻译(Binary Translation)是一种直接翻译可执行二进制程序的技术,能够把一种处理器上的二进制程序翻译到另外一种处理器上执行.它使得不同处理器之间的二进制程序可以很容易地相互移植,扩大了硬件/软件的适用范围,有助于打破前面提到的处理器和支持软件之间互相掣肘影响创新的局面.

---来自百度百科

基于二进制翻译技术的完全虚拟化,主要是解决一些敏感指令的翻译。翻译过程如下:

7d249c176edf3d793e805acfdab22762.png

Guest OS运行在Ring1级别,VMM运行在Ring 0级别完全掌控系统资源对资源进行控制,对于一些非特权指令可以直接执行。对于一些特权指令则将其替换成陷入指令,通过VMM来捕获并模拟其指令的执行。

半虚拟化的执行过程如下:

1a9ed2fc2d908184700841bbc4d55d15.png

对于半虚拟来说Guest OS和VMM都是运行在Ring 0上,Guest OS的普通指令是可以执行执行的,而对于一些特权指令来说因为Guest OS知道其运行在虚拟环境下,所以对于一些特权指令Guest OS是直接调用VMM提供的Hypercalls来执行的。

下面来介绍下硬件辅助虚拟化,其过程如下:

0f24e0601ed5a66b5e6245fee7339cb1.png

对于硬件辅助虚拟化来说,又引入了一个Root mode Privilege Levels,Guest OS是运行在普通模式下Ring 0特权级别处于受控模式,是要受到Root mode的控制,而VMM此时是运行在一个Root mode级别下,对于Guest OS执行的所有特权指令一些敏感指令都将会全部陷入Root mode,VMM就可以方便的捕获到全部指令,这就解决了部分非特权的敏感指令问题。并且对于模式的切换和恢复都是由硬件来完成所以性能上也很好。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值