全虚拟化和半虚拟化

全虚拟化技术

全虚拟化技术会完全的虚拟操作系统硬件和环境,跟真实机器没有任何区别(至少对于虚拟机内的操作系统是这样),操作系统并不知道自己运行在虚拟机中,因此操作系统也不需要做任何的改动,理论上全虚拟化支持各种平台的操作系统,即使不开源的windows也可以。


半虚拟化技术

半虚拟化只虚拟了目标操作系统中平台相关的部分,目标系统需要修改部分代码以便于与宿主机协调进行工作,宿主可直接控制虚拟机的内存(甚至让虚拟机直接使用宿主的物理内存)。如果宿主机和虚拟机操作系统架构相同,虚拟机内的指令可直接在宿主的真实cpu上执行,使虚拟机效率无限接近于真机。因为该技术需要修改操作系统内核,因此比较适合linux等开源操作系统。


关于半虚拟化

比如在x86上实现android模拟器,android模拟器的操作系统内核和环境部分可以完全用x86实现,指令直接在真机执行,只有android中与平台有关(ARM)的模块或者程序通过指令翻译实现,甚至部分相通的代码都不需要翻译,直接调用宿主x86的代码(例如OpenGL),这样可以使模拟器最大程度上的接近于真机性能。

你可能感兴趣的:(虚拟化)