Unix 40 岁:革命性操作系统的过去、现在和未来

四十年后,该操作系统的未来已变得模糊,但它的遗产将继续存在。

四十年前的这个夏天,一位程序员坐下来,在一个月内完成了有史以来最重要的软件之一。

1969 年 8 月,AT&T 子公司贝尔实验室的程序员肯·汤普森 (Ken Thompson) 认为,妻子和年幼的儿子将离开一个月,这是将自己对新操作系统的想法付诸实践的机会。他用汇编语言为一台性能不佳的数字设备公司 (DEC) PDP-7 小型计算机编写了 Unix 的第一个版本,并在操作系统、shell、编辑器和汇编程序上各花了一周时间。

自从贝尔实验室今年早些时候退出开发分时系统(名为多路复用(多路复用信息和计算服务)。他们不想坚持使用当时占主导地位的任何批处理操作系统,也不想重新发明 Multics,因为他们认为它丑陋而笨重。

在讨论了一些新系统的想法后,汤普森编写了 Unix 的第一个版本,两人在接下来的几年里在同事道格·麦克罗伊、乔·奥萨纳和拉德·卡纳迪的帮助下继续开发这个版本。Multics 的一些原则被带到了他们的新操作系统中,但 Unix 当时(如果不是现在)的魅力在于其“少即是多”的理念。

里奇和汤普森五年后在ACM 通讯(CACM),计算机协会的期刊。“[我们希望] Unix 用户会发现该系统最重要的特征是它的简单性、优雅性和易用性。”

显然他们做到了。Unix 后来成为 IT 的基石,广泛部署在大学、政府机构和公司的服务器和工作站上。它的影响力甚至比实际部署的范围还要广,正如 ACM 在 1983 年授予汤普森和里奇最高奖项 AM 图灵奖以表彰他们对 IT 的贡献时所指出的那样:“Unix 系统的模型引领了一代软件设计师以全新的方式思考编程。”

早期步骤

Unix 早期的汤普森 (Thompson) 和里奇 (Ritchie)。

当然,Unix 的成功并非一蹴而就。1971 年,它被移植到 PDP-11 小型计算机,这是一个比最初编写它的 PDP-7 更强大的平台。它添加了文本格式化和文本编辑程序,并向贝尔实验室专利部门的几名打字员推广,他们是开发团队之外的第一批用户。

1972 年,里奇编写了高级 C 编程语言(基于汤普森早期的 B 语言);随后,汤普森用 C 重写了 Unix,大大提高了操作系统在计算环境中的可移植性。在此过程中,它获得了 Unics(单路信息和计算服务)这个名字,这是 Multics 的谐音;拼写很快演变为 Unix。

是时候传播这个消息了。里奇和汤普森 1974 年 7 月CACM文章, ”UNIX 分时系统”一经问世便风靡 IT 界。在此之前,Unix 仅供贝尔实验室的少数用户使用。但现在有了计算机协会的支持(一位编辑称其为“优雅”),Unix 正处于转折点。

“这CACM这篇文章产生了巨大影响,”IT 历史学家 Peter Salus 在他的书中写道恶魔、牛羚和企鹅“很快,Ken 就收到了大量有关 Unix 的请求。”

黑客的天堂

汤普森和里奇是完美的“黑客”,“黑客”一词指的是那些将非凡的创造力、强大的智力和熬夜工作结合起来来解决别人几乎不知道的软件问题的人。

他们的方法和编写的代码极大地吸引了大学的程序员,后来也吸引了没有 IBM、惠普或微软巨额预算的初创公司的程序员。Unix 是其他黑客(如加州大学的 Bill Joy、卡内基梅隆大学的 Rick Rashid 和后来贝尔实验室的 David Korn)所希望的一切。

汤普森和里奇在CACM文章。“由于所有源程序始终可用且易于在线修改,因此当其他人发明、发现或提出新想法时,我们愿意修改和重写系统及其软件。”

科恩现为 AT&T 研究员,20 世纪 70 年代曾在贝尔实验室担任程序员。“Unix 的一大特点是可以编写工具,并且有更好的工具可以替代它们,”他回忆道。“它不是那种你必须购买一切的庞然大物;你实际上可以开发更好的版本。”他开发了颇具影响力的 Korn shell,本质上是一种用于指导 Unix 操作的编程语言,现在作为开源软件提供。

作家兼技术历史学家 Salus 回忆起他在 20 世纪 70 年代担任多伦多大学教授时在 IBM System/360 大型机上使用编程语言 APL 的工作。当时进展并不顺利。但 1978 年圣诞节后的第二天,哥伦比亚大学的一位朋友向他演示了在小型计算机上运行的 Unix。“我说,‘哦,天哪’,我完全被说服了,”Salus 说。

他说,Unix 对他来说最大的优势是其 1973 年推出的“管道”功能,该功能使将一个程序的输出传递到另一个程序变得很容易。贝尔实验室的 McIlroy 发明的管道概念随后被许多操作系统所效仿,包括所有 Unix 变体、Linux、DOS 和 Windows。

Unix 的另一个优势(用 Salus 的话来说,是第二个“哇”)是它不需要价值百万美元的大型机即可运行。它是为微型、原始的 DEC PDP-7 小型计算机编写的,因为那是 1969 年 Thompson 和 Ritchie 唯一能弄到的。“PDP-7 几乎什么都做不了,”Salus 回忆道。“我被迷住了。”

许多人也对 Unix 着迷。大学研究人员纷纷采用 Unix,因为它相对简单且易于修改,对资源的要求不高,而且源代码基本上是免费的。Sun Microsystems 等初创公司以及许多专门从事科学计算的公司(如 Multiflow Computer)也出于同样的原因选择了它作为操作系统。

Unix 后代

Unix 之所以发展成为非专有系统,是因为 1956 年,美国联邦同意令禁止 AT&T 偏离其提供电话服务的使命。AT&T 可以开发软件,甚至可以以“合理”的费用授权,但该公司被禁止涉足计算机业务。

Unix 的开发并未得到管理层的鼓励,AT&T 最初将其视为介于新奇事物和法律难题之间的事物。

随后,在 20 世纪 70 年代末,AT&T 意识到自己手上有一些具有商业重要性的东西。其律师开始对 1956 年的同意令做出更为有利的解释,因为他们在寻找保护 Unix 作为商业机密的方法。从 1979 年开始,随着第 7 版的发布,Unix 许可证禁止大学在课程中使用 Unix 源代码进行学习。

没问题,阿姆斯特丹自由大学的计算机科学教授安德鲁·塔南鲍姆 (Andrew Tanenbaum) 说,他一直在使用 Unix V6。1987 年,他编写了一个 Unix 克隆版本供课堂使用,创建了在英特尔 80286 微处理器上运行的开源 Minix 操作系统。

“Minix 融合了 Unix 的所有理念,这是一项了不起的工作,”Salus 说。“只有资深程序员,深刻理解操作系统内部原理的人,才能做到这一点。”Minix 将成为 Linus Torvalds 于 1991 年创建 Linux 的起点 — 即使它不是 Unix 的克隆版,也肯定是 Unix 的仿制品。

回溯到大约十年前,20 世纪 70 年代,加州大学伯克利分校的研究生兼程序员比尔乔伊 (Bill Joy) 得到一份来自贝尔实验室的 Unix 副本,他认为这是一个很好的平台,可以帮助他开发 Pascal 编译器和文本编辑器。

他和伯克利其他人所做的修改和扩展产生了 Unix 的第二个主要分支,称为伯克利软件发行版 (BSD) Unix。1978 年 3 月,乔伊寄出了 1BSD 的副本,售价为 50 美元。

因此,到了 1980 年,Unix 出现了两条主要产品线,一条来自伯克利,一条来自 AT&T,这为后来的 Unix 战争奠定了基础。好消息是,世界各地的软件开发人员都可以获得 Unix 源代码,并根据自己的需求和想法进行定制。坏消息是,他们就是这么做的。Unix 迅速发展,变体也开始分化。

1982 年,乔伊与他人共同创立了 Sun Microsystems,并推出了一款工作站 Sun-1,该工作站运行的是 BSD 的一个版本,称为 SunOS。(Solaris 大约在十年后问世。)次年,AT&T 发布了 Unix System V 的第一个版本,这是一个影响深远的操作系统,后来成为 IBM 的 AIX 和惠普的 HP-UX 的基础。

Unix 家族树。图片来源:Eraserhead1 (抄送-sa-3.0GFDL

Unix 战争

20 世纪 80 年代中期,包括联邦政府在内的用户抱怨称,尽管 Unix 在理论上是一款单一、可移植的操作系统,但实际上却并非如此。供应商只是口头上支持这种抱怨,却日夜不停地努力利用定制的 Unix 功能和 API 来吸引客户。

1987 年,当时隶属于贝尔实验室的 Unix 系统实验室开始与 Sun 合作开发一个统一两大 Unix 分支的系统。双方合作的成果 Unix System V Release 4.0 于两年后发布,融合了 System V Release 3、BSD、SunOS 和微软 Xenix 的功能。

其他 Unix 供应商害怕 AT&T/Sun 联盟。各方组建了相互竞争的“标准”组织,名称包括 X/Open、开放软件基金会、Unix 国际组织和开放系统公司。这些组织的论点、反论点和成就足以写成一本书,但他们都宣称自己走上了统一 Unix 的康庄大道,同时却互相攻击。

著名的小型计算机先驱 Gordon Bell 在 1988 年为美国国防高级研究计划局 (DARPA) 撰写的一篇未发表的论文中这样评价刚刚成立的开放软件基金会其中包括 IBM、HP、DEC 和其他反对 AT&T/Sun 合作关系的公司:“OSF 是让没有 Unix 的公司进入不断发展的市场的一种方式,同时还能维持他们高利润的代码博物馆。”

Unix 之战未能解决分歧,也未能为操作系统树立真正的标准。但在 1993 年,Unix 社区收到了微软的警示,即企业级 32 位多处理操作系统 Windows NT。专有 NT 直接针对 Unix,旨在将微软的桌面霸权扩展到数据中心和 Sun 服务器等公司拥有的其他地方。

微软用户对此大加赞赏。Unix 供应商则惊慌失措。所有主要的 Unix 竞争对手联合起来发起了一项名为通用开放软件环境,并于次年将 AT&T/Sun 支持的 Unix 国际组织与开放软件基金会合并,从而或多或少地放弃了武器。该联盟演变成今天的开放组织,Unix 系统认证者和单一 Unix 规范,现为“Unix”的官方定义。

从实际情况来看,考虑到供应商的竞争习惯,这些发展可能已经尽可能地“标准化”了 Unix。但它们可能来得太晚,无法阻止名为 Linux 的洪流,Linux 是 Tanenbaum 教授的 Minix 衍生的开源操作系统。

Unix 的未来

最近的一项研究表明,由于 Unix 的竞争版本之间仍然缺乏完全的可移植性,以及 Linux 和 Windows 在 x86 商用处理器上具有成本优势,IT 组织将逐渐放弃 UnixGartner Group 的民意调查

2009 年 2 月发布的民意调查报告指出:“调查结果再次证明了人们对 Linux 作为主机服务器平台的持续热情,Windows 同样呈现增长势头,而 Unix 则将经历长期但逐渐的衰退。”

Gartner 分析师乔治·韦斯表示:“Unix 有着悠久而活跃的历史,虽然它不会消失,但压力将越来越大。Linux 是战略‘Unix’的首选。”他说,尽管 Linux 不具备 Unix 那样悠久的开发、调优和压力测试历史,但它在性能、可靠性和可扩展性方面正在接近并很快将与 Unix 相提并论。

但这表明任何脱离 Unix 的迁移都不会很快发生。在对 211 名 IT 经理中的 130 名 Unix 用户的调查中,90% 的人表示他们的公司“非常或极度依赖”Unix。略多于一半的人表示,“Unix 对我们来说是一个必不可少的平台,并且将永远如此”,只有 12% 的人表示,“我们预计未来会脱离 Unix。”成本节约(主要通过服务器整合)被认为是迁移的首要原因。

Weiss 表示,由于硬件成本优势,向商用 x86 处理器的迁移将会加速。“水平、可扩展架构;集群;云计算;x86 上的虚拟化——当你把所有这些趋势结合起来时,首选的操作系统就是 Linux 和 Windows,”他说。

Weiss 表示:“例如,思科最近宣布其统一计算架构,您可以在一个结构中实现网络、存储、计算和内存链接,并且不需要 Unix。您可以在 x86 上运行 Linux 或 Windows。因此,英特尔代表 Linux 赢得了对 Unix 的战争。”

开放组织 (Open Group) 是单一 Unix 规范的拥有者和 Unix 系统的认证者,它对 Linux 几乎不屑一顾,并称 Unix 是“为关键任务应用程序提供高端功能、可扩展性和性能”的首选系统。它表示,Linux 往往是规模较小、不太重要的应用程序的标准。

AT&T 的 Korn 是仍然看好 Unix 的人之一。Korn 表示,自 1973 年增加管道功能以来,Unix 多年来的优势在于它可以轻松分解成多个部分并进行分发。他说,这将推动 Unix 向前发展:“[管道] 理念在云计算中非常有效,在云计算中,你可以构建小型可重复使用的组件,而不是一个庞大的整体应用程序。”

Unix 的遗产

无论 Unix 的最终命运如何,40 年前诞生于贝尔实验室的这个操作系统已经建立了一个可能还会持续几十年的遗产。它可以成为许多流行软件的源头,包括 IBM、HP 和 Sun 的 Unix 产品,以及苹果的 Mac OS X 和 Linux。它还影响了一些与 Unix 几乎没有直接关系的系统,比如微软的 Windows NT 以及 IBM 和微软版本的 DOS。

Unix 为许多初创公司提供了一个低成本的开发平台,从而使它们获得了成功。它是互联网的核心组成部分,也是当今电信系统的核心。它催生了许多重要的架构理念,例如流水线,而 Unix 的衍生产品 Mach 则为科学、分布式和多处理器计算做出了巨大贡献。

ACM 在 1983 年为表彰汤普森和里奇的 Unix 工作而颁发的图灵奖中或许说得最好:“Unix 系统的天才之处在于它的框架,它使程序员能够站在别人的成果之上。”

下一个:

Gary Anthes 曾是计算机世界国家通讯员。