Xen是一个虚拟平台,它从一个学术研究项目发展成为一个比较大的开源项目。它允许它的用户在一个物理机器(physical machine)上运行多个操作系统,同时对性能、隔离(isolation)和安全都有特别的考量。
Xen这个项目已经对多个领域才生了巨大影响:从软件到硬件,从学术研究到商业部署。它的成功很大程度上归功于它被发布成为基于GNU公共许可证(GPL)的开放源代码项目。但是,开发者们并不是简单地在某一天坐下来,然后决定去写一个开源的hypervisor。它最初是一个更大甚至更加野心勃勃的研究项目Xenoservers的一部分。这个项目成为了开发Xen的一个动机,因此我们用它来阐述虚拟化的必要性。
Xen开源不但让大范围的用户可以获得它,而且让它与其他开源项目和谐共生。自从它被发布之日起,Xen的独门秘籍就是使用半虚拟化(paravritualization)技术来运行像Linux这样的商用操作系统。半虚拟化需要对运行在Xen上面的操作系统进行修改,这样不但提高了性能也简化了Xen本身。但是,半虚拟化也就到此为止,只有结合处理器厂商提供的硬件上的支持,才能在Xen上运行不能更改源代码的(unmodified)操作系统,比如微软的Windows。处理器研发方面的一个新的前沿就是增加新的特性以支持虚拟机同时减少由此产生的在性能上的影响。
Xen的架构随着新特性的增加以及新的硬件的出现而慢慢地演化。但是,从最初的原型系统(prototype)到现在的版本,Xen始终保持着同一个基本的结构。在本章,我们将探寻Xen的架构是如何变得成熟起来的,从早期作为一个研究项目开始,中间经历三个大的版本,以至于今。