CPU虚拟化、内存虚拟化、I/O虚拟化概念

记录一下自己对虚拟化的理解。

 

CPU虚拟化:

全虚拟化:主要利用模拟仿真技术,优先级压缩技术,二进制翻译技术。Guest OS认为自己是物理机,会发出ring0级别的指令产生权限异常,异常被vmm捕获后,陷入模拟仿真。

优先级压缩技术,使Guest OS运行在ring1下,VMM不能捕捉到敏感指令,所以二进制翻译将其转化为其它架构的指令,使敏感指令和特权指令重合,VMM可以捕捉到异常。

 

半虚拟化:修改Guest OS内核,使Guest OS知道自己是虚拟机,避免虚拟化的执行冲突,通过Hypercall(超级调用)技术直接将指令发送给VMM,让VMM处理。

全虚拟化

 

硬件辅助虚拟化:主要是Inter的VT-x 和 AMD-V 这两种技术。让VMM和Guest OS分别运行在root模式和非root模式下,让Guest OS的一般指令可以直接发送到硬件,而特权指令会切换到VMM去执行。

 

优缺点:全虚拟化效率低,半虚拟化效率高,但需要修改内核。

 

内存虚拟化:

全虚拟化:主要是运用了影子页表法。虚拟地址到物理地址的映射是先从VA到PA再到MA,然后通过影子页表法,将VA和MA通过P2M页表或者hash函数形成映射,可以减少一个查找的过程。在Guest OS的访存操作都会发生缺页中断,VMM就会捕捉到缺页异常,从而将其写入影子页表中,实现同步。

 

半虚拟化:修改操作系统的代码,主要运用页表写入法,剥夺guest OS写页表的权利。当客户机操作系统创建新页表,VMM也创建相同的页表,保存PV与MA的映射关系,当PV发生改变,VMM可直接从页表里读取到MA。

 

硬件辅助虚拟化:MM维护了一个EPT(扩展页表),通过硬件代替影子页表,VMM把扩展页表(EPT)设置到CPU中,客户机修改客户机页表,CPU自动查找客户机页表和EPT,完成VA到MA转换

 

优缺点:全虚拟化效率低,半虚拟化效率高,但需要修改代码,硬件辅助虚拟化效率高。

 

 

IO虚拟化:

全虚拟化:通过软件模拟的形式模拟IO设备。

 

半虚拟化:物理硬件资源统一由Hypervisor管理,由Hypervisor提供资源调用接口。虚拟子机通过特定的调用接口与Hypervisor通信,完整I/O资源控制操作。

 

硬件辅助虚拟化:Intel VT-d技术和Passthrough技术通过降低I/O操作中VMM的参与提升了虚拟机的I/O性能, SR-IOV标准在此基础上支持虚拟机对I/O设备的原生共享。

CPU虚拟化、内存虚拟化、I/O虚拟化概念_第1张图片

 

但也增加了虚拟机的I/O延迟。

 

相关文档资源请自行提取:

链接:https://pan.baidu.com/s/14iUZItb1qrqV5lNjRGFbpA 
提取码:g4oc 

 

CPU虚拟化、内存虚拟化、I/O虚拟化概念_第2张图片

你可能感兴趣的:(OpenStack)