一个被称为“失败”的操作系统,为何仍连续运行了33年

· 2026-11-13 07:15 · 0 阅读

原创 huizhou92 2026-11-13 07:15 广东

Multics在工程上从未失败,而Unix的诞生也不是一场有预谋的颠覆。

前言:贝尔实验室放弃了Multics,Unix踩在它的肩膀上诞生。但很多人不知道,这套被放弃的系统其实一直在正常工作,默默运转了三十三年。

这个被大家称为故障的操作系统一直持续运行到2000年10月30日。

2000年10月30日,在加拿大新斯科舍省哈法利克斯的一处国防设施内,加拿大国防部的技术人员拉下了一台老旧大型机的总电闸。

这是地球上最后一台原生运行的Multics系统,就此彻底关机。

那一年,整个软件行业都在为“千年虫(Y2K)”危机而紧张,担心20世纪90年代建设的关键基础设施会在日期翻转时崩溃。而在那座加拿大海岸基地里,那个早在1964年就画下核心架构蓝图的操作系统,悄然完成了它最后一天的运行。

自1967年原型机问世以来,Multics已经在工业和军事计算的前线连续运行了三十三年。

但是,在计算机科学的主流叙事中,Multics几乎总是被当作一个反面教材:一个过度设计的庞然大物,一场失控的学术尝试。而轻巧优雅的Unix,则是踩在它的肩膀上诞生的。

这种“简单战胜复杂”的叙事很符合大众胃口,但它掩盖了两个事实:Multics在工程上从未失败,而Unix的诞生也不是一场有预谋的颠覆。

一、计算公用事业的愿景

Multics的研发项目始于1964年的马萨诸塞州剑桥市。

麻省理工学院的计算机先驱费尔南多·科尔巴托(Fernando Corbató)联合通用电气(GE)和贝尔实验室,共同启动了MAC项目。

当时,人类与计算机的交互还停留在“批处理”时代:程序员将穿孔卡片递进机房窗口,等上几个小时甚至过夜,才能拿到打印机输出的结果。一个逗号放错,一天的工作就白费了。

科尔巴托提出了一个彻底的范式转变:计算公用事业。

在他的愿景中,算力不应只是囤积在地下室的昂贵机器,而是应该像水电一样成为市政设施。中央机房在城市中心运行,线路延伸至各个办公室,工程师们通过终端随时接入算力。 

为了让数百名远程用户同时操作而不受干扰,MAC团队发明了至今仍支撑现代操作系统的架构基础:

  • 第一次将存储介质组织成层级树状目录,也就是今天我们熟知的父子文件夹结构;

  • 发明了Shell,将用户界面与内核内部机制分离;

  • 开创了基于内存映射文件的单级存储,程序员不再需要编写繁琐的磁盘缓冲程序,操作系统直接完成映射。

最激进的是,通用电气专门设计了GE-645大型机,在硬件层面强制引入了“保护环”机制。处理器包含8个特权环:微内核位于Ring 0,系统服务在中间层,用户程序在外围。用户程序一旦试图读取内核内存,CPU硬件会直接拦截并终止操作。

通用电气 GE-645 大型机,为 Multics 定制设计,并于 1967 年交付给麻省理工学院。

这是一个宏大的蓝图。但现实很快给项目泼了冷水。

那个时代的操作系统全靠手写汇编,团队却做了一个冒险的决定:用当时并不成熟的高级语言PL/I编写整个Multics内核。

问题是,当时根本没有生产级的PL/I编译器。麻省理工的学生们只能一边写内核,一边自己造编译器。编译后的代码体积不可控地膨胀,重新编译系统需耗费数小时的大型机机时。按当时的计费标准,每一次测试编译都要花费数百美元。

而GE-645仅有几十万字的物理内存,Multics在上面运行非常吃力。

二、贝尔实验室撤资,通用电气退出

1969年,五年过去了,系统却迟迟无法交付。

贝尔实验室的高管失去了耐心。作为需要对股东负责的工业研究机构,管理层看到的是一个持续烧钱的无底洞。预算超支、硬件交付延期,交付可用的系统似乎遥遥无期。

1969年4月,贝尔实验室宣布退出Multics项目。第二年,通用电气也撑不住了,将计算机业务整体卖给了霍尼韦尔(Honeywell)。

三大支柱倒下了两根,业界普遍认为Multics已经胎死腹中了。

三、废弃PDP-7上的游戏与Unix的诞生

贝尔实验室退出后,GE搬走了那台大型机。一群顶尖研究人员失去了交互式分时环境。

其中有一位30岁的程序员,名叫肯·汤普森(Ken Thompson)。

在参与Multics项目时,汤普森在GE-645上写过一个叫《星际旅行》(Space Travel)的游戏。机器搬走后,他试图在商用GE-635批处理机上跑这个游戏。但他发现,为了在迟钝的终端屏幕上模拟登月,计算中心每次运行要收他75美元。

为了继续玩游戏,汤普森在实验室走廊里找到了一台闲置且落满灰尘的DEC PDP-7小型机。

DEC PDP-7 小型机。 Ken Thompson 和 Dennis Ritchie 在一台废弃的 8K 字机器上引导了 Unix。

这台机器配置极低:内存仅8192个18位字,显示器是粗糙的矢量示波器,而且它连操作系统都没有。

1969年夏天,汤普森的妻子带孩子回加州探亲,给了他一个月在实验室安静敲代码的时间。

他拉来丹尼斯·里奇(Dennis Ritchie)和鲁迪·卡纳迪(Rudd Canaday)。他们没有官方项目授权,没有预算,唯一的目标是用汇编语言在这台废弃机器上写个微型内核,仅仅是为了让《星际旅行》能流畅运行。

他们精简了Multics的特性,保留了层级目录和Shell,扔掉了8层嵌套保护环、PL/I运行环境和虚拟内存映射。

Multics将每个实体视为复杂的结构化对象,而汤普森采取了一种极致的简化:所有资源、设备和文件,统统被视为无结构的字节流。

同事布莱恩·柯林汉(Brian Kernighan)看到这个简陋的单用户系统,开玩笑地将其命名为UNICS(Uniplexed Information and Computing Service),用来调侃Multics的复杂多路复用。后来,拼写演变成了UNIX。

1973 年,肯·汤普森(左)和丹尼斯·里奇在 PDP-11 前。

两者投入的资源天差地别:

  • Multics需要跨国联盟、数百万美元联邦拨款和定制硬件;

  • Unix只需要一台没人要的旧电脑,和一个想玩游戏的程序员。

主流叙事到这里就结束了,它把这个故事包装成了一次极简主义对企业官僚体制的绝对胜利。

但在工业界,故事还有另一面。

四、谁才是真正的失败者?

收购GE计算机业务后,霍尼韦尔并未放弃Multics。他们与麻省理工团队合作,将硬件升级为霍尼韦尔6180,把保护环机制固化到了高速硅片中。

1973年,商业版Multics推出。它的目标客户不是小型软件公司,一套完整的Multics中心标价高达数百万美元。

然而,五角大楼、美国空军、通用动力、福特汽车以及法国大型银行集团却纷纷买单。

在20世纪70和80年代,全球约有80个顶级计算设施运行Multics。它们支撑了西方联盟的关键神经系统:从核弹道模拟、战术空中指挥,到覆盖数万名员工的企业薪资系统。

为什么这些机构宁愿花几百万美元买Multics,也不花点工本费去拿一盘Unix系统的磁带呢?

核心原因只有两个字:安全。

早期的Unix系统经常崩溃,缺乏内部内存隔离,任何人只要猜到root密码就能接管整个系统。

而Multics提供了严格的结构性防御。

1974年,空军委托霍尼韦尔加固Multics内核,实现了强制访问控制(MAC)和正式的多级安全模型。

1985年,美国国家计算机安全中心发布了《可信计算机系统评估标准》(即业界熟知的“橙皮书”)。

根据该标准,绝大多数商业企业系统(包括20年后发布的Windows NT早期版本)只能达到C2级基础安全评级。

而在橙皮书金字塔顶端,一个直接源自Multics的专用系统(STOP 2.1 / SCOMP)拿到了最高评级:A1级(形式化数学验证)。

Multics 命令行登录横幅。从 1967 年到 2000 年,该操作系统一直处于活跃生产状态。

它的内核机制在数学上被证明可以防止权限提升。这种架构后来演化成了军用级XTS-400操作系统。

五、败给商业成本,而非技术架构

为什么Multics最终消失在大众视野中?

不是工程设计的失败,而是硬件商品化的必然结果:Multics被专有硬件绑死了。

运行 Multics,机构必须购买霍尼韦尔价值数百万美元的大型机。

相比之下,丹尼斯·里奇在1973年用C语言重写了Unix。1977年,Unix被移植到Interdata 7/32 上,成功将操作系统与特定CPU解绑。

C语言发挥了极强的跨平台适配作用。只要芯片厂商生产出廉价的微处理器,编译一下C代码,Unix就能直接运行。

当摩尔定律将工作站价格从几十万美元打到几千美元时,开放的廉价硬件彻底击垮了专有大型机。微型计算机的浪潮席卷而来,定制化的大型机最终变成了昂贵的博物馆展品。

2006年,法国计算机公司Bull SAS以自由软件许可发布了完整的Multics源代码。现代系统程序员在查阅这些历史悠久的PL/I代码时发现了一个惊人的事实:

内存分段、动态链接库(.so 和 .dll)、内存映射I/O、层级访问控制列表(ACL)、细粒度多级安全……这些现代计算的核心特征,早在几十年前就被 Multics 实现并部署在了生产环境中。

当年离开MAC项目的年轻人,建立了一个务实、普及的Unix世界;而科尔巴托和留下来的人,则守护着一套严谨的计算体系,直到2000年。

历史给Multics贴上了“失败”的标签;但在国防和科研的关键系统中,这台机器连续无故障运转了三十三年。

作者丨huizhou92      编译丨dbaplus社群

来源丨网址:https://medium.com/plain-golang-tutorial/the-operating-system-that-ran-until-2000-and-is-still-called-a-failure-05313a890a61

dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn

跳转微信打开

本文转载自微信公众号「dbaplus社群」,查看原文。版权归原作者所有,如有侵权请联系删除。