# 衍生版本

正如早期版本的 Unix 诞生了 MERT、PWB、LSX 和 Idris，第 7 版和 4.xBSD 也孕育了大量系统。从字母表顺序的 Amoeba 到 V，以及从地理位置上的耶路撒冷向西到台湾，数量众多，难以一一列举。然而，作为过去十年发展类型的代表，我将在本章快速介绍五个系统：MOSIX（以色列）、Chorus（法国）、Amoeba（荷兰）、Mach 和 Plan 9（美国）。

MOSIX（多计算机 Unix 操作系统）是一款分布式操作系统，它将一组松散连接的计算机集群整合成一个虚拟的单机 Unix 环境。MOSIX 由 Amnon Barak 于 1981 年在耶路撒冷希伯来大学启动。最初称为 MOS，设计用于一组 PDP-11/23 计算机，基于 Unix 第 7 版。1983 至 1984 年间，开发了基于 M68000 芯片的版本。截至 1993 年，MOSIX 已发布四个连续版本，包括 1987 年的 32V 版本（称为 NSMOS，因为它运行在基于 National Semiconductor NS32332 的计算机上）、1988 年夏天的 VAX 版本（基于 SVR2）和 VME532 版本——最新版本运行在多处理器工作站集群上。MOSIX 最初引入的独特特性包括通过动态进程迁移实现负载均衡，以及使用概率算法支持系统扩展。

Chorus 于 1979 年由 Hubert Zimmerman 在法国 INRIA 发起，作为一个研究项目。到 1986 年，一家相当庞大的团队已开发了三个面向通信的分布式系统内核。这些早期版本均采用自定义接口。1986 年的 Chorus-V2 与 Unix System V 兼容。此后，该项目被分拆为商业公司 Chorus Systèmes。1993 年，在被 Novell 收购之前，UNIX System Labs 宣布将采用 Chorus 的技术。正如我在前几章反复提到的，由于 Unix 研究社区的开放性，本章中提及的各种系统和项目之间存在大量“共享”。因此，Chorus-V3 具备类似 Mach 的分布式虚拟内存和“线程”机制，具备类似 Amoeba 的网络寻址，以及与第 9 版 Unix 一致的统一文件命名。正如 1970 年代末期，这是一种优势，而非弱点。

Chorus 由一个内核和多个系统服务器组成，这些服务器在子系统的上下文中协同工作。其中一个子系统实现是 Unix。Chorus Systèmes 推出了多个有用且有趣的内核和 Unix 子系统变体。

1980 年代中期，Andy Tanenbaum 在阿姆斯特丹自由大学（他曾编写 MINIX）提出，未来计算的特点将是物理上分布的硬件与逻辑上集中管理的软件需求。基于此理念，VU 启动了 Amoeba 项目。随后，荷兰数学中心（CWI，原名 MCMathematische Centrum）的 Sape Mullender 等人与 VU 合作，共同开发 Amoeba。

Amoeba 架构包括：

* 带窗口系统的工作站
* 用于计算的处理器池
* 专用服务器（文件和目录服务器）
* 通向其他系统的网关

Amoeba 软件基于对象；其中包含 Unix 仿真包及其他多种组件。Amoeba 设计理念认为，局域网内的一组机器应能与广域网中远程的一组机器通信。鉴于广域网通常速度较慢且可靠性较低，Amoeba 网络设计的主要目标是在不牺牲性能的前提下实现网络透明性。

由于 Tanenbaum 对 AT\&T 1978 年许可政策的不满，Amoeba 从零开始编写，内核和工具程序中均不包含任何 AT\&T 或 Berkeley 代码，从而免除了对这两者许可证的需求。

Unix 向多处理器领域发展的另一个分支是 Mach，由卡内基梅隆大学发明。Mach 起源于 Avadis Tevanian、Rick Rashid 及其同事们的工作，目标涵盖单处理器、多处理器和分布式系统等多种计算机架构。其初衷是提供一个紧凑、高效的内核，在此基础上可以为各种操作系统构建接口。Mach 使用的文件系统源自 1982 年 CMU 维护的 4.1BSD 文件系统。Mach 内核则源自 Rashid 1981 年对 Accent（“面向通信的网络操作系统内核”）的研究。到 1990 年，Mach 实现了对 4.3BSD 的完全向后兼容。Mach 被指定为 OSF（开放系统基金会）将在 1989-90 冬季用于构建其未来操作系统的内核。

1987 年，Rob Pike 和 Ken Thompson 开始设计 Unix 的替代系统。贝尔实验室的 Dave Presotto、Tom Duff 和 Howard Trickey 很快加入。该系统名为 Plan 9（取名自科幻电影《外太空计划 9》，这部电影可谓史上最差科幻电影之一）。Plan 9 采用三层架构，一端是公共服务器，另一端是终端。服务器为多处理器机器，终端基本上是无盘工作站。第三层是广域网，连接终端和服务器网络。Greg Chesson、Sandy Fraser 和 Dennis Ritchie 开发的 Datakit 网络被用作长途传输网络。Plan 9 反其道而行之，违背了当时计算环境的发展趋势：自 1986 年 Sun 3 发布以来，“主流”观点是使用越来越大磁盘的工作站，连接在局域网中。而 Plan 9 是一个由独立机器组成的分布式计算环境，这些机器充当服务器、终端等，所有部分通过单一协议和本地命名空间操作连接。

Plan 9 已在运行 1386 处理器的笔记本电脑以及大型服务器上实现。1993 年底，Dave Presotto 告诉我，该项目已移交给商业厂商管理，并补充说：“我们正在着手开发新系统——有什么烂电影的名字推荐给我们用吗？”
