看操作系统虚拟化原理总结篇——虚拟化概述原理

来源:互联网 发布:淘宝店铺营销亮点 编辑:程序博客网 时间:2024/06/07 23:16

1.如何判断一个架构能否虚拟化

先说下虚拟化的三个典型特征:同质,高效,资源受控。

再说下指令:系统中有一些操作和管理关键系统资源的指令被定义成特权指令,这些指令只能运行在最高特权级上。

另外还有部分指令,可能需要读取敏感寄存器,内存地址或者是IO指令,这些指令是敏感指令。显而易见,所有的特权指令都是敏感指令,然而所有的敏感指令并不一定是特权指令。 VMM能捕获到敏感指令,然后陷入再模拟,这就是普通的虚拟化手段。

总结:判断一个架构能否虚拟化,就在于是否能将敏感指令能否触发异常,从而捕获,不然就是虚拟化漏洞。


2.CPU虚拟化

作为虚拟化的三大部分之一,CPU的虚拟化占据着绝对位置:

具体来说,CPU虚拟化要完成的就是捕获客户机中的敏感指令,让非敏感或者非特权的指令能直接运行在物理CPU上,然后捕获敏感指令,达到陷入再模拟。

当客户机操作系统试图去访问关键资源的时候,该请求时不会发生在物理寄存器上。不管怎样,其宗旨就是让虚拟机里执行的敏感指令陷入下来,能被VMM模拟,而不要直接运行在硬件上。并且陷入一般是通过CPU的保护机制来实现的。


3.内存虚拟化

内存虚拟化的核心,就在于引入了一层新的地址空间-----客户机物理地址空间。所以这里就存在着两级页表的转换。GPA - GVA -HPA。

这里具体来说,就是Guest 维护着GPA和GVA的关系,然后VMM维护着GVA和HPA的关系。由于两次转换确实是太费资源,所以出现了改进技术,影子页表和TPT(扩展页表)。

影子页表会在后面的软件完全虚拟化中详细解释。


4.IO虚拟化

分为两部分,一部分是让Guest发现硬件设备,然后加载相关驱动。第二部分就是找到有效的办法来截获客户机操作系统对虚拟设备的访问。





0 0