之前学习TrustZone,这种ARM的机制是虚拟出两个相互隔离的区域,并分别运行安全系统和普通系统。然后就一直有一个疑问,这种虚拟是如何实现。今天看了hypervisor虚拟机技术,总算有了大概的了解。

虚拟机技术是通过对计算机资源(内存,CPU等)的分区和组合,使得这些资源表现为一个或多个操作环境。也就是说通过对原有的硬件资源进行分组,在每个组上分别运行一个独立的操作系统,从而使得资源能得到更高效的利用。虚拟技术又分为全虚拟技术和半虚拟技术。


                                      

android虚拟机概念 安卓虚拟机技术_操作系统


全虚拟技术(如VMware)是在底层硬件上加了一个Hypervisor软件,该软件主要负责处理硬件和客户操作系统的协调工作。这种虚拟化技术最大的特点是客户端操作系统不需要修改就能直接运行在Hypervisor之上,具有良好的兼容性。在这种情况下Hypervisor运行在裸硬件之上,充当主机操作系统,由Hypervisor管理虚拟服务器运行客户端操作系统,保证了不同客户端系统的完全隔离。不过由于Hypervisor需要消耗一些资源,所以全虚拟化的性能略差。

半虚拟化技术也和全虚拟技术类似,不过半虚拟技术将与虚拟有关的代码集成在虚拟系统本身,因此不需要对于特权指令进行捕获。为了适应这种技术,需要对内核进行修改,因此能获得更高的效率。

最简单,最常见的虚拟技术的使用是我们windows或linux上的虚拟机,如KVM。这种虚拟技术的使用是在原有的OS之上添加一个很小的模块,利用原有的OS做任务调度、内存管理以及硬件设备交互等。这种虚拟技术的使用实质上就是利用原有的OS提供了一个模拟的运行环境,并由该系统处理一些事物。在这种模式下每一个虚拟机都是一个常规的进程,通过原有的OS进行调度。

而Xen是第一类运行在裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化,支持Hypervisor和虚拟机直接的通信,而且提供了所有linux版本上的免费产品。