番外三:IBM、MIT与Multics——一场改变操作系统史的三角博弈
在第三章我们讲到,Multics是一个太超前的项目,最终被自己的野心压垮。但这个故事有一个更深层的版本——它不仅仅是“目标太大、硬件跟不上”的技术悲剧,更是一场涉及美国计算机产业顶尖玩家的三角博弈:学术界的MIT、商业巨头的IBM、通信帝国的贝尔实验室(以及它背后的AT&T),再加上中途入场的通用电气和最后接盘的霍尼韦尔。每一方都有自己的算盘,每一方都在这个项目里拿到了自己想要的东西——或者失去了自己没想到会失去的东西。
本文试图回答一个核心问题:为什么Multics这样一个由顶级机构联合开发的“梦幻项目”,最终会分崩离析? 答案不是“技术太难”,而是:各方的目标从一开始就不一致。 当学术理想主义遇上商业现实主义,当硬件厂商的路线图撞上软件开发的现实,崩盘几乎是注定的。
但这不意味着Multics是失败。它的灰烬里,飞出了UNIX。
一、IBM的霸主地位与MIT的“被迫合作”
要理解Multics的起源,必须先理解1960年代初的IBM有多强。
那时,IBM占据了美国大型计算机市场超过70%的份额。它的System/360系列(1964年发布)是一个划时代的产品:一套兼容的架构,覆盖从低端到高端的全部需求。客户买了便宜的360/30,将来可以无缝升级到360/91,软件不用重写。这在当时是革命性的——以前每家厂商、甚至同一家厂商的不同型号,软件都不兼容。
System/360的巨大成功让IBM成了“蓝色巨人”,也让其他厂商喘不过气来。通用电气(GE)、霍尼韦尔(Honeywell)、RCA、宝来(Burroughs) 被并称为“白雪公主与七个小矮人”中的小矮人——而IBM就是那个白雪公主。
MIT呢?MIT是计算机科学的圣殿。它的林肯实验室和计算中心在国防项目(如SAGE防空系统)中积累了深厚的技术实力。但MIT有一个痛点:它用的IBM机器,操作系统都是IBM给的——封闭、不透明、改不了。教授们想搞操作系统研究,得看IBM脸色。
1960年代初,MIT的计算中心想买一台新的大型机。他们自然想到了IBM。但他们提了一个条件:IBM必须开放机器的底层接口,让MIT自己写操作系统。
IBM不干。开放接口意味着别人可以写出比IBM官方系统更好的操作系统,那IBM的硬件还怎么卖?再说了,IBM自家的OS/360虽然庞大臃肿,但功能齐全,你MIT凭什么觉得自己能写得更好?
谈判陷入僵局。
这时候,美国国防部高等研究计划局(ARPA,后来的DARPA) 介入了。ARPA有钱,有需求(它资助了MIT的多个研究项目),也乐意看到IBM的垄断被打破。ARPA说:MIT,你们去找别的厂商。GE正好想挑战IBM,霍尼韦尔也有这个心思。你们联合起来,做一个比IBM更好的系统。
于是MIT转向了GE。GE当时有GE-645大型机,硬件设计不错,但在操作系统方面是短板。GE巴不得抱MIT这条大腿,写一个全世界最先进的分时系统,然后卖硬件。
1964年,MIT与GE签约。但GE的机器跑操作系统需要底层软件支持,MIT的软件团队需要合作伙伴。谁来做系统编程?找贝尔实验室。
二、贝尔实验室的加入:学术自由 vs 商业纪律
贝尔实验室是AT&T(美国电话电报公司)旗下的研发机构,在1960年代享有“诺贝尔奖工厂”的美誉。晶体管、激光、信息论、Unix……都是它的手笔。贝尔实验室的文化极度崇尚学术自由——研究人员可以做任何自己感兴趣的研究,公司不干涉。
但AT&T当时处于一个特殊的法律地位:它在1956年与美国司法部达成了一份反垄断同意令(Consent Decree),规定AT&T不能进入计算机商业领域。也就是说,贝尔实验室可以搞研究,但不能把研究成果变成产品去卖(除了电话网络相关的设备)。这后来成了UNIX能自由传播的关键原因——AT&T对UNIX早期版本几乎不收钱,因为它法律上不能卖。
回到Multics。MIT找贝尔实验室的理由很充分:贝尔实验室有全世界最顶尖的系统程序员。其中一个叫肯·汤普森的年轻人,刚加入不久,精力旺盛。
1964年,三方签约:MIT负责整体架构设计,通用电气提供硬件(GE-645),贝尔实验室负责软件开发中的核心部分(如文件系统、调度器、I/O子系统)。ARPA出钱。
听起来很完美?但裂痕从一开始就存在。
第一,目标不一致。 MIT想要一个完美的研究平台——可以无限扩展、功能极致、供学者们“玩弄”操作系统概念。通用电气想要一个能卖钱的商用产品——稳定、够用、能交付。贝尔实验室想要一个“有趣的项目”——反正我们不卖,做得好发论文,做不好也没损失。
第二,管理方式冲突。 MIT的团队是学术圈作风:开了无数的设计会议,每个人都想塞进自己最喜欢的特性。贝尔实验室的工程师更务实:我们写代码就跑,别整天开会。通用电气的人则在中间受夹板气。
第三,硬件拖后腿。 GE-645的设计初衷是兼容GE-635,以保护老客户投资。但这个兼容性要求让分页硬件变得极其复杂,性能抖动严重。贝尔实验室的工程师发现,他们花在“绕过硬件缺陷”上的时间,比写新功能还多。
到1967年,项目已经严重延期。贝尔实验室开始有人抱怨:“我们到底是做研究还是做产品?”
1969年,贝尔实验室正式宣布退出。理由写得很体面:“由于项目范围过于广泛,以及GE硬件无法满足性能要求……”私下里,一位负责人说得更直接:“Multics太学术了,我们看不到它变成实用产品的希望。”
退出后,贝尔实验室带走了什么?什么都没有——代码归MIT和GE。但肯·汤普森带走了一个想法:我要写一个“简单”的系统,不像Multics那样什么都往里塞。
三、通用电气的挣扎与霍尼韦尔的接盘
贝尔实验室退出后,MIT和GE继续硬撑了几年。但GE的日子不好过:电脑业务连年亏损,IBM的打压无处不在。1970年,GE决定彻底退出计算机行业,把整个电脑部门卖给了霍尼韦尔。
霍尼韦尔接盘Multics时,心态是复杂的。一方面,霍尼韦尔一直想挑战IBM,Multics的技术理念确实领先。另一方面,Multics的代码庞大臃肿,性能低下,离商业化还有很长的路要走。
霍尼韦尔咬咬牙,投了更多资源进去。1975年,Multics正式发布商业版本,跑在霍尼韦尔自己的大型机上。它确实稳定、安全、功能强大——但价格贵得离谱。一台能跑Multics的机器要几百万美元,操作系统本身也要几十万美元的年授权费。除了银行、军工、大学顶级实验室,谁买得起?
到1980年代中期,Multics在全球只有约80个站点在运行。1985年,霍尼韦尔把计算机业务卖给了法国公司Bull。Bull继续支持Multics到1990年代,但大势已去。2000年,最后一个Multics站点被关闭。
Multics的商业失败,成了霍尼韦尔赔了夫人又折兵的典型案例。但霍尼韦尔不算冤——它至少从GE手里低价捡了个技术宝库,后来把这些技术(尤其是安全机制)用在了自己的其他产品里。
四、MIT的遗产:学术赢了,商业输了
MIT在Multics项目中的角色,从头到尾都是“学术追求”。他们要的不是一个商品,而是一个试验场——验证分时系统、虚拟内存、动态链接、安全隔离等概念的可行性。
从这个角度看,MIT赢了。Multics证明了所有那些概念是可行的(虽然硬件当时撑不住)。MIT培养了一大批操作系统专家,包括后来的Fernando Corbató(因在分时系统方面的贡献获得1990年图灵奖)。MIT的论文和报告,成了下一代系统设计者的必读材料。
但MIT输掉了另一条战线:它没能挑战IBM的霸主地位。Multics没有成为“IBM killer”,甚至没有成为主流。IBM的OS/360(后来演变成MVS、OS/390、z/OS)继续统治大型机市场。
MIT的真正遗产,不是Multics本身,而是它所催生的反抗者——贝尔实验室的UNIX。UNIX走了一条MIT不屑于走的路:简单、廉价、可移植、不追求完美。结果UNIX席卷了学术界和工业界,而Multics成了教科书上的脚注。
五、三角博弈的核心冲突:学术理想 vs 商业现实
把这几方的得失放在一起看,就会发现一个清晰的冲突模式:
- MIT(学术方):追求极致功能、完美设计、无限扩展。时间不重要,成本不重要,商业化不重要。Multics是他们的“大教堂”。
- GE / 霍尼韦尔(商业硬件方):追求可交付、可销售、能赚钱。他们需要的是一个能带动硬件销量的操作系统,而不是一个永远在设计的学术玩具。
- 贝尔实验室(半学术半工业方):追求“有趣”和“技术优雅”。但因为法律限制不能商业化,反而成了最灵活的一方——说退就退,退了自己再写一个。
这个三角结构,在后来很多技术项目里重复出现(比如后来的GNU Hurd、Java、云计算)。当三方的目标完全不一致时,合作必败。 Multics的失败不是任何一方的过错,而是结构性的。
那有没有可能调和?UNIX给出了一个答案:先让一个简单的东西跑起来,然后吸引社区加入,形成生态。 这不是“顶层设计”的产物,是“进化”的产物。而MIT的Multics是“设计”的产物——精美、完整,但太重了。
六、番外结语:灰烬里飞出的凤凰
Multics失败了。它的直接遗产——代码、产品、商业——几乎被历史遗忘。
但它的间接遗产,塑造了现代计算世界。
第一,它直接催生了UNIX。肯·汤普森在Multics的废墟上,写了一个“微缩版Multics”——不要分层文件系统?要。不要动态链接?不要(早期没有)。不要高安全性?不要。不要单级存储?不要。把Multics的大多数“高级功能”砍掉,留下的就是UNIX的核心。
第二,它的设计理念通过UNIX间接影响了Linux、macOS、Windows NT。今天你在Windows里看到的“C:\Users\你的名字\Documents”这个路径结构,就是Multics的分层文件系统的直系后代。你打开macOS的“活动监视器”看到的内存使用图表,底层是虚拟内存——Atlas和Multics的遗产。
第三,它提供了一个永久的警示:工程上,完美主义往往是敌人。复杂度会膨胀到压垮一切。很多时候,做对一件事的最好方式,是先把简单的事情做对,然后一步步叠加复杂性。
MIT、IBM、贝尔实验室、GE、霍尼韦尔——这场三角博弈没有赢家,也没有输家。每一个参与者都从Multics里拿到了自己想要的某些东西,也都付出了代价。
而那个因为退出项目而“闲得无聊”的肯·汤普森,在一台没人要的PDP-7上用汇编语言敲出的UNIX,最终改变了世界。UNIX的故事,就是下一章要讲的内容。
番外后记:本文的很多细节,参考了《The Multics System: An Examination of Its Structure》(Elliott Organick,1972)、《A History of UNIX before Berkeley》(Peter H. Salus,2005)以及IEEE Annals of the History of Computing上关于Multics的多篇论文。关于贝尔实验室退出Multics的具体原因,除了官方表述,还参考了汤普森和里奇后来的访谈——他们私下说过:我们在Multics里学到一个教训,就是“不要做太复杂的东西”。这个教训,价值连城。