目录
3. The Virtual Machine Interface
5.1 Control Transfer: Hypercalls and Events
1. 文章导读:
现代计算机的功能已经足够强大,已经有了很多虚拟化技术来对物理机的资源进行切分,有一些需要专门的硬件支持,有一些则不能支持现在商用的操作系统,有些则是牺牲了安全性以达到某种性能。那么使一台物理机器支持多个操作系统的并发执行,面临着哪些难点?
- VM之间必须相互隔离:一个VM的执行程序不影响其他VM的性能
- 支持不同类型的OS:不同的应用程序适用的操作系统可能不同
- 虚拟化带来的性能开销要足够小
因此,本文提出了Xen,这是一种x86虚拟机监视器,它允许多个商用操作系统在不牺牲性能和功能的前提下以一种安全并且资源可控的方式来共享硬件资源。Xen允许用户动态实例化操作系统来执行他们想要的任何操作,其目标是在现代服务器上支持100台虚拟机同时在线。
2. Xen的虚拟化方法
Xen采用了半虚拟化的方法,是一种与底层硬件类似但不完全相同的虚拟机抽象,该方法需要求对运行在Xen上的 guest OS进行一些修改,但不需要对application binary interface(ABI)进行修改,因此也不需要对guest applications进行改动,有效的保证了性能的提高。
Xen的设计原理主要为以下四条:
- 不需要修改ABI,否则应用程序开发者还要把应用程序移植到xen平台上。因此xen必须能够虚拟化现有的标准ABI所需的所有硬件feature。
- 支持完整的多应用程序操作系统。
- 实现半虚拟化,这有助于在x86等架构上获得高性能和强大的资源隔离。
- 即使在支持虚拟化的硬件架构上,对guest os完全隐藏资源虚拟化的影响也面临着正确性和性能的风险。
3. The Virtual Machine Interface
这部分介绍了xen向guest os提供的虚拟机抽象接口,以及如何修改guest OS以符合硬件要求。在本文中,我们用guest OS指代Xen可以托管的操作系统之一,domain是guest os运行时所在的虚拟机,guest os和domain的区别类似于"程序"和"进程"之间的关系,两者一个是静态的,另一个是动态的。我们称Xen为hypervisor,因为Xen相比于guest os的supervisor code,运行在一个更高的特权级。
半虚拟化的x86接口,将其分为三个主要方面:内存管理(memory management,)、CPU和设备I/O(device I/O)。
具体细节如下图: