首页 理论教育 CPU虚拟化面临的难题及其解决方案

CPU虚拟化面临的难题及其解决方案

时间:2023-11-23 理论教育 版权反馈
【摘要】:CPU 的虚拟化面临的难题是操作系统要在虚拟化环境中执行特权指令功能。正是这个难题,导致基于X86体系架构的CPU 虚拟化实现难度较大。当然,全虚拟化的方案会增加开销,这是在牺牲一定性能的基础上实现的CPU 虚拟方案。图3-1服务器虚拟化全虚拟化与半虚拟化方案将一个物理CPU 虚拟成一个虚拟CPU,一个物理CPU 只能处理一个虚拟CPU 的指令,不能对应多个虚拟CPU 的指令。操作系统可以使用一个或多个虚拟CPU,这些虚拟CPU 在系统中是相互隔离的。

CPU虚拟化面临的难题及其解决方案

CPU 的虚拟化面临的难题是操作系统要在虚拟化环境中执行特权指令功能。目前的操作系统大多基于X86架构,在设计时被要求直接运行在物理机上,完整拥有整个底层物理硬件。对于CPU 而言,在X86体系中有4个运行级别,分别为Ring0(指令层级),Ring1,Ring2和Ring3。特别是Ring0级别,可执行任何指令,包括CPU 状态的修改。类似这样的指令,被称为特权指令,也只能在Ring0级别中完成。虚拟化的X86架构,要求操作系统与底层硬件之间要加入虚拟层,而Ring0只能运行在虚拟层,这导致操作系统的特权指令不能直接运行在硬件上,中断处理等特权操作便不能完成。正是这个难题,导致基于X86体系架构的CPU 虚拟化实现难度较大。

为了解决这个难题,业界在初期提出了全虚拟化和半虚拟化两个软件方案,如图3-1所示。

全虚拟化,就是在操作系统和虚拟层之间采用二进制代码动态翻译技术,对于操作系统的特权指令采用前插陷入指令的方式,插入至虚拟层的虚拟机,由虚拟机进行指令翻译,再执行操作。这样做的好处是操作系统无需进行更改,对于特权指令通过虚拟层转换翻译执行,非特权指令可以直接依靠物理环境直接执行,这样可以支持多个操作系统。当然,全虚拟化的方案会增加开销,这是在牺牲一定性能的基础上实现的CPU 虚拟方案。

半虚拟化方案,则是全虚拟化的反面,通过修改操作系统解决虚拟机执行特权指令的问题,所有特权指令会转换为虚拟化平台的一个超级调用,虚拟平台为超级调用提供接口,操作系统会主动配合虚拟平台完成自身的修改。唯一不足的是,半虚拟化方案中的虚拟平台和操作系统要统一匹配,不支持多系统。伴随着CPU 虚拟化技术的发展,针对两种软件方案存在的开销牺牲性能的缺陷,业界提出了一种硬件方案,即在处理器中增加硬件辅助虚拟化功能,通过扩展的VMX(虚拟机)指令,支持虚拟化操作。在具体应用中,处理器有两种运行模式:根模式和非根模式。虚拟化平台中,处理器就运行在根模式。硬件的扩展,大大优化了虚拟平台的设计。(www.xing528.com)

图3-1 服务器虚拟化全虚拟化与半虚拟化方案

将一个物理CPU 虚拟成一个虚拟CPU,一个物理CPU 只能处理一个虚拟CPU 的指令,不能对应多个虚拟CPU 的指令。操作系统可以使用一个或多个虚拟CPU,这些虚拟CPU 在系统中是相互隔离的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈