第三部分内容作者使用Xen、Guardian、JPC以及Jikes RVM四个实例向我们展示系统架构所涵盖的内容。
第七章 Xen和虚拟化之美
首先我们需要了解何为Xen,Xen是一个虚拟化平台,它来自于一项学术研究成果,现已发展成为一个重要的开源项目。它容许客户在单个物理机器上运行几个操作系统,并特别强调性能、隔离性和安全性。最初的Xen是Xenoservers项目的一部分,而Xenoservers的目标是创建一个“全球的分布式计算结构”。当设计Xen架构的时候,首先要关注的是只要有可能,就把策略和机制分开来。系统管理程序设计成用来管理低级硬件的薄层,担当引用监控器和调度程序,复用对硬件设备的访问。最新版本的Xen包含了Bochs和QEMU的代码,它们都是模拟程序。在操作系统的环境中,Xen已经表明半虚拟化,无论是它增加虚拟驱动程序还是大规模地改变操作系统,还是在选定区域中有意识地提升性能,都是在虚拟环境中运行时提升性能的一项重要技术。当然在Xen发展过程中采取的最大胆的决策就是当其他管理程序只作为私有软件时把Xen开源化。
第八章 Guardian:一个容错操作系统环境
Guardian是Tandem的容错“NonStop”系列计算机的操作系统。它设计成与硬件并行以便用最小的开销提供容错性。这里作者主要从Tandem入手来进行描述。Tandem把所有计算机描述成有多个处理器的单独计算机,但是,从21世纪的观点来看,它们更像是与单个计算机一样运行的计算机网络。尤其是每个处理器都几乎完全不依赖其他处理器而独立地工作,而系统可以从任何单个组件的故障中恢复。和传统联网处理器最大的区别是整个系统都从单个内核映像开始运行。Guardian是一个微核系统:除了低级别的中断处理器和一些非常低级别的代码之外,所有的系统服务都运行在系统代码和数据空间中的系统进程处理。其比较重要的进程包括:系统监控程序、内存管理器、I/O进程这三者。
第九章 JPC:一个纯java的x86 PC模拟程序
java的运行处理机制其实很慢,模拟程序同样很慢。所以当两者结合起来时,只能意味着以蜗牛的速度进行计算。其实最初的JPC原型确实要比真的机器慢10000倍。现代的pc内部非常复杂。它的硬件已经优化和迭代了许多次以形成一个高效和普遍的计算平台。然而,它也保留了设计来维持它向后兼容的遗留组件和功能。JPC的大部分设计师相对简单系统分析,对这个模拟程序来说,把初始的系统映射到JPC也几乎是在硬件规范和java类之间进行一一对应。优化的第一准则就是不要优化。和所有性能技巧一样,技巧知识指导方针而不能将它作为准则。良好设计和清晰编码的代码几乎总是优于“优化的”代码。只有看到对设计有积极的影响或对性能真的有必要时再参考指导方针。作者有提到几点指导方针:创建对象不好、静态好、表切换好,查找切换不好、方法越小越好、Exception用于异常的情况、小心使用装饰模式、对类进行instanceof的操作更快、最低程度地使用同步、小心外部库。
第十章 元循环虚拟机的力量:Jikes RVM
在一个托管运行时环境中运行代码是当今来发人员的普遍选择。实际上,大部分已开发代码都适合于托管运行时环境。Jikes RVM采用java语言编写来运行java运行程序。不但运行时系统是用java编写的,而且这个架构的所有其他组件都是用java编写的。这些组件包括自实行和优化的编译系统、线程、异常处理和垃圾收集。与一个传统编译器的自举相比,元循环运行时的自举涉及更多的技巧。启动映像的内容是代码和数据,类似于在一个常规编译器的对象文件中的东西。Jikes RVM的启动映像中额外包含了由垃圾收集器创建的根映射。Jikes RVM是一个成功的实验虚拟机,以一种灵活和易于扩展的方式提供近乎于艺术级的性能。以运行时支持的语言来编写,这允许紧密的集成和组建的重用。Java的使用使简单易懂的代码、好的模块性和高质量工具的使用成为可能。