跳到主要内容

UNIX传奇:历史与回忆

· 阅读需 20 分钟
不如怀念
Web 前端工程师 (Web Front-end Engineer)

最后更新于 2021-12-05 16:47:00

对于经常看纯技术书籍的人来说,难免会感觉到烦闷,阅读纯技术书籍的过程通常是非常消耗人的,不像看小说,是一个享受和放松的过程。所以,借此机会,找到一本与技术相关但并非纯粹的技术教程类书,讲解了 UNIX 诞生的历史和之后发展壮大的过程,虽然相比于小说还是略有枯燥,但其中也不乏精彩之处,对于一个技术研发成果,从多个角度阐述和讨论,也会让作为从事技术开发工作的人来说有一定的启发。

为什么会选择看这一本书呢?大概是因为后续也想多了解一下 Linux 操作系统相关的东西,了解一种技术的发展历程和出现的原因,比了解技术本身可能更能获益。其次,本书的作者是与 UNIX 诞生和发展过程中紧密相关的人物,所以该书阐述的很多事情具有一定的真实性和现实性。

UNIX

Linux 作为现今互联网世界的主流服务器操作系统,其本质上是一个类 Unix 系统,而苹果公司的 MacOS 底层实际上也基于 Unix。同时,贝尔实验室因其强大的技术创新能力也为互联网界所熟知,而 Unix 就是在这里诞生的。

贝尔实验室

要了解 Unix 是如何产生的,得先了解贝尔实验室,尤其是其运作机理,以及它提供的创意环境。

贝尔实验室起初是 AT&T(即美国电话电报公司,American Telephone and Telegraph Company)的一个研究机构,主要目的是系统解决在建设全国电话系统时遇到的科学和工程难题。

贝尔实验室的早期研究涉及物理、化学、材料学和通信系统。研究员们有追随兴趣的自由,相关问题的环境资源也非常丰富,若想探索既满足科学兴趣又能有益于贝尔系统(Bell System)乃至全世界的领域,并非难事。

贝尔实验室很多的技术研究成果改变了世界,最先出现的就是晶体管,是半导体行业技术发展的里程碑。由于 AT&T 从事的行业具有垄断性质,所以企业营收有所保障,而管理层的眼光也很长远,虽然被政府限制不能涉及通信行业以外的生意,但仍然为贝尔实验室提供高额的研发资金,这也为后来实验室招揽各行各业的人才提供了保证,进而才有后来实验室成员屡获诺贝尔奖的结果。

持续的资金投入是研究工作的关键保障。这意味着 AT&T 能布局长远,贝尔实验室的研究员们也能自由探索那些未必有短期回报,甚至可能永无回报的领域。现今世界已全然不同,多数人只做未来几个月的规划,功夫都花在了预测下一季度财务状况上。

Unix 诞生

Unix 并不是世界上第一个操作系统,其开发者也是基于使用和开发其它操作系统丰富的经验才开发出了 Unix,进而不断的完善。但是,为什么要开发一个新的操作系统呢?

更加麻烦的是,操作系统用汇编语言写成。汇编语言是人能读懂的机器指令,与特定类型硬件的指令集紧密相关。每种计算机都有自己的汇编语言,所以操作系统是庞大且复杂的汇编语言程序,每个操作系统都针对特定硬件、使用特定语言编写。

系统之间缺乏共通性,使用相互不兼容的低级语言,导致同时需要多个版本的程序:为某一操作系统编写的程序,在移植到其他操作系统或硬件架构上时,必须完全重写。这种状况阻碍了进步。如后文所述,Unix 操作系统在所有类型的硬件上都保持一致,而且用较高级的语言写成,只需付出相对较少的成本,即可从一种计算机移植到另一种计算机。

可以说,Unix 的出现是操作系统发展历史上具有里程碑式的意义的事件,其为后来的发展指明了方向。Unix 的核心开发者肯·汤普森最先是一名操作系统开发者,在其所在的项目结束后,毅然决定继续开发操作系统,而且是在没有公司支持的情况下,然而就是在这样困难的环境下,最终完成了 Unix 初始版本开发,并在实验室内部进行推广。

1969 年,Unix 还只是个雏形,到了 1971 年,Unix 才发布了初版,在实验室内处理文档相关的工作。

Unix 第 6 版

按照手册上的日期,第 1 版 Unix 在 1971 年底开始运行。在接下来的几年里,大约每半年就会有一版新手册问世,每次都会增加重要的新功能、新工具和新语言的相关内容。第 6 版 Unix,其手册发布于 1975 年 5 月,首次拓展到贝尔实验室以外。它对世界产生了重大影响。

1973 年 Unix 的两位核心开发者丹尼斯·里奇和肯·汤普森联名发布论文,向世界公开描述 Unix 是什么东西,可以做什么,有什么优势。而这也是 Unix 逐渐成熟,可以向外进行传播和推广的时刻了。对于 Unix 提供的几个非常有用的特性和工具,也一直延续至今:

文件系统、系统调用、shell、管道、grep 命令、正则表达式、C 语言等等。

其中,文件系统相关最伟大的构想则是莫过于将各种文件和设备统一简单的抽象为字节序列,将不同格式的文件处理程序从操作系统剥离,交给特定的应用软件来处理。

Unix 诸多好用的功能,在开发过程中,并不是由开发者凭空想象出来的,而是通过和其它人交流,借鉴其它人的经验,当然也包括从事非开发工作的人,在这样一种开放的沟通环境中被创造出来的。Unix 的核心思想就是简化一切复杂的东西,屏蔽硬件层面的区别,给应用程序开发者和用户更好的体验和更低的门槛。Unix 提出的许多优秀思想现如今在各种软件工程中都有所体现。

今天的读者可能很难体会到这一切是做了多大简化之后的结果。早期操作系统中,真实设备的所有复杂情况都会反馈给用户。用户必须知道磁盘名称,了解磁盘的物理结构,如有多少柱面和磁道,以及数据是如何安放在上面。

Unix 第 7 版

“正是从第 7 版开始,系统才逐渐成熟,走出了象牙塔。第 7 版是第一个可移植版本,Unix 从此核爆炸般地移植到了无数类型硬件上。因此,第 7 版的历史是所有 Unix 系统共同传承的一部分。”——道格·麦基尔罗伊,《科研版 Unix 读本》(A Research Unix Reader: Annotated Excerptsfrom the Programmer’s Manual[1]),1986 年

此时,距离第 6 版发布已经过了 4 年,1979 年 Unix 的发展达到了高潮。如果说,第 6 版的 Unix 已经准备好了操作系统的核心,那么第 7 版所带来的各种应用工具,事实上进一步推动了操作系统的发展,尤其是编程语言的发展。

第 7 版中出现了我们至今还在使用的主流 shell,即 Bash(Bourne Again Shell),其前身为史蒂夫·伯恩开发的 sh。最重要的则是出现了基于语言的工具 Yacc、Lex、Make,这些工具大大降低了编程语言的开发难度,由此开始,新的编程语言犹如雨后春笋般的出现,蓬勃发展至今。

这个时候,已经有多位实验室成员加入了 Unix 的开发队列,为其开发了诸多工具程序。

Unix 的传播

前面提到,两位 Unix 的核心开发者通过发表论文的方式向世界公开了 Unix 的存在,也许有很多极客玩家和搞学术研究的人会对其产生兴趣并进行实践,但一款产品最终的目标用户应该是更广泛的人群。

“目前,全世界有 1400 所大学和学院使用 Unix 操作系统。它是 70 种计算机产品线的基础,范围涵盖从微型计算机到超级计算机。目前正在运行的 Unix 系统约有 10 万个,约有 100 家公司正在开发基于它的应用程序。”——R·L·马丁(R.L.Martin),Unix System Readings and Applications,卷 2,1984 年

Unix 除了在实验室内部传播之外,在外部的主要传播途径则是“免费”许可给高校作为学术研究使用。

然而,社区迅速发展,用户群体在世界各地涌现,并发生了重大技术革新,例如将系统移植到不同类型的硬件上,以及增加访问互联网的新机制。

加利福尼亚大学伯克利分校是最活跃的许可获得者之一,该校的一些研究生对系统做出了重大贡献,最终演化出伯克利软件发行版(Berkeley Software Distribution,BSD)。BSD 是由最初的科研版 Unix 演变而来的两个主要分支之一。

由于 AT&T 根本不向 Unix 许可持有人提供任何支持(这个想法并非 Unix 本意),用户被迫联合起来互相帮助,最终推动召开定期会议,开展技术介绍、软件交流,当然还有社交活动。IBM 系统的 SHARE 用户组 1955 年就成立了,现在还很活跃。其他硬件厂商也有用户组。

Unix 在通过高校传播的过程中发生很多意想不到的事情,让 Unix 名声大噪,形成了自发的技术社区,还有学校老师约翰·莱昂斯为源代码亲自写评注并教授给学生,这些奇妙的事情太多太多,最终让 Unix 在短短几年内就拥有了大量的用户。

商业化

如果说贝尔实验室能成功的前提是 AT&T 以长远的发展目光为其提供高额的研发经费,那么实验室的研究成果如何转化为商业价值则是一个重要的问题。此时,AT&T 因为从事垄断行业,政府禁止其售卖 Unix 以避免和操作系统厂商产生竞争,同时又用通信的收入来进行补贴。

不幸的是,AT&T 虽然采取了规避监管的措施,但仍然由于其从事的垄断行业而遭到攻击,进而最终妥协被拆分。由此,贝尔实验室此前稳定的研发经费支持也不复存在,开始走下坡路。

被拆分后,AT&T 无力销售 Unix,这给了 Unix 系统实验室(Unix System Laboratories)的商业机会,而 USL 也紧抓机会开始了 Unix 的商业推广。在这个过程中,品牌或者说商标所有权问题也浮出水面,幸好早有准备,才不至于将事情搞得很麻烦。

纵然,Unix 的商业化进展并非非常成功,但其也为了操作系统的发展和社区带来了突出的贡献。

派生物和遗产

从第 7 版开始有两条发展线:一条来自伯克利,它以比尔·乔伊及其同事的工作为基础;另一条来自 AT&T,因为 AT&T 试图将 Unix 的专业知识和所有权做成一桩有利可图的生意。

由于 AT&T 早期没有给予 Unix 足够的重视,导致在代码所有权上吃了亏。

在 20 世纪 80 年代后期,许多 Unix 系统的供应商使用 Unix 商标名称,并提供起码是源自贝尔实验室第 7 版系统的软件。然而,版本之间,尤其是 AT&T 的 System V 和伯克利发行版之间,存在不兼容问题。所有各方都同意,急需制订一套共同标准。至于标准该是什么样子,当然没有统一意见。

AT&T 和一些盟友成立了自己的团体 Unix 国际(Unix International),颁布标准,与开放软件基金会(Open Software Foundation)制订的标准对打,结果是出现了两个相互竞争的不同“开放”标准。POSIX(Portable Operating System Interface,可移植操作系统接口)标准和由 X/Open 管理的“单一 Unix 规范”(Single Unix Specification)诞生了。前者用于基本的库函数,后者为各个 Unix 版本的库、系统调用和大量常用命令(包括 shell、awk、ed 和 vi)规定了统一标准。

最终,Unix 没有作为主流发展起来,而类 Unix 系统则层出不穷,逐渐占据了主流位置。一些 Unix 的核心开发团队成员开始将工作重心转移到了开发新的操作系统 Plan9 上,Plan 9 操作系统力图进一步完善 Unix。

Plan 9 于 1992 年提供给高校使用,几年后公开发布,用于商业用途,但如今只有一小部分爱好者使用。主要原因可能是 Unix 和持续增长的 Linux 势头太猛,没有令人信服的理由让大多数人换系统。可能还有一个较小的原因:它过于特立独行。

可以看到,一个研究成果推广的时机也非常重要。

后来,由于 AT&T 进一步被拆分,贝尔实验室的人员已经流散到各处,有谷歌公司、高校等等。

Unix 虽然最终没有成为主流,但现有的主流操作例如 Linux 均是基于 Unix 或是受到 Unix 的启发而出现,在不断的发展过程中,Unix 所倡导的思想也一直延续至今。Unix 得到了很多人的认可和尊重,留下了珍贵的遗产,无论是团队管理、人才招聘还是技术研发等方面,都给我们提供了诸多可借鉴的经验。

会不会有另一个 Unix?会不会有新操作系统横空出世,在几十年内占领世界?当我谈到 Unix 时,经常会被问到这样的问题。我的回答是不会,至少目前不会。不会有革命发生。更有可能的是,操作系统将继续发展,同时携带大量的 Unix DNA。

  • 《UNIX 传奇:历史与回忆》- [美] Brian W. Kernighan 著,韩磊 译