跳到主要内容

Unix 起源

Multics 项目​

由于早期的计算机并不像现在的个人计算机一样普遍,只有极少数人才有机会接触到,并且当时的计算机架构很难使用,操作接口麻烦。因此在1965年前后,由贝尔实验室(Bell)、麻省理工学院(MIT)及通用电气公司(GE)共同发起了 Multics 的项目,Multics(全称:MULTiplexed Information and Computing System)是一个全面的、通用的分时操作系统,Multics 项目的目的是想让大型主机可以同时提供 300 台以上的终端机连接使用的目标。

可是,到了1969年前后,项目进度落后,资金也短缺,在认为 Multics 项目不可能成功之后,贝尔实验室退出了该项目的研究工作。最终 Multics 项目还是成功地开发出了他们的系统,Multics 系统虽然后来没有受到很大的重视,但是该项目培养出了很多优秀的人才,包括 Ken Thompson、Dennis Ritchie、Joe Ossanna、Douglas McIlroy、Peter Neumann、Stan Dunten、Rudd Canaday 等等。

Multics 分时操作系统的历史

Multics 分时操作系统的历史

Unics 系统​

参与 Multics 项目的工程师们调回贝尔实验室后,面对实验室落后的仍以批处理工作的计算机环境,他们非常怀念 Multics。其中一位工程师 Ken Thompson,他因为想移植一套名为“太空旅游”的游戏,希望开发一个小的操作系统以供使用。1969年8月,万般无奈的 Thompson 在库房里发现了一个闲置的 PDP-7,刚好此时处于休假期并且他的妻儿探亲去了,于是 Thompson 有了额外的一个月时间实施他的计划。经过4个星期的奋斗,以汇编语言写出了一组内核程序,还包括一些内核工具程序,以及一个小的文件系统。在操作系统、Shell 程序、编辑器和汇编程序上,他各花了一周时间。

由于当时 Thompson 从 Multics 项目中获得想法,将 Multics 庞大而复杂的系统进行简化,于是同实验室的朋友都戏称这个系统为 Unics(该系统就是 Unix 的原型)。

Thompson 的这个文件系统有两个重要的概念,分别是:

  • 所有的程序或系统装置都是文件。
  • 不管构建编辑器还是附属文件,所写的程序只有一个目的,就是要有效地完成目标。

这些概念在后来对于 Linux 的开发有相当重要的影响。这也就是著名的 KISS(keep it simple, stupid)原则,即“简单原则”——尽量用简单的方法解决问题,这是 “Unix 哲学” 的根本原则。

最初运行 Unix 系统的 DEC PDP-7

最初运行 Unix 系统的 DEC PDP-7

C 语言与 Unix​

由于 Thompson 写的 Unics 实在太好用了,所以在贝尔实验室内部广为流传,并且多次经过改版。但是因为 Unics 是以汇编语言写的,高度依赖硬件,所以每次安装到不同的机器上都需要重新编写汇编语言。于是 Thompson 与 Ritchie 合作想将 Unics 改用更高级的程序语言来编写,从而提高可移植性。他们先选择了 BCPL(简称 B 语言),然后又尝试 PASCAL,发现编译出来的内核性能都不是很好,因为这些语言都不太贴近硬件操作。于是,两人(主要是 Dennis Ritchie)决定自己开发一套新的语言:这就是大名鼎鼎的 C 语言。

Ken Thompson 和 Dennis Ritchie 在 PDP-11 前工作

Ken Thompson(坐着)和 Dennis Ritchie 在 PDP-11 前工作

1973年,Dennis Ritchie 用 C 语言重写与编译 Unics 的内核,最后发行出 Unix 的正式版本。“重写”说起来简单,实际上并不是简单的汇编到 C 语言的翻译,这里边包含了很多的发明和创造。在此期间引入的 “pipe”(管道)功能后来成为了 Unix 的一大优势,这种功能使得程序间输出结果的传递非常容易。管道的概念是贝尔实验室的 Douglas McIlroy 发明的,后被很多操作系统大量拷贝,其中包括 Unix 的所有变体、Linux、DOS 和 Windows。

重写过的 Unix 很快就流行起来,此后便一直应用于生产领域。50多年过去了,虽然出现了很多的类 Unix 系统(例如Linux),但是他们都继承了 Unix 中的基本思想,并且发扬光大。著名的类 Unix 系统包括 Berkeley Unix、Minix、Linux、AIX、A/UX、HP-UX 以及 Solaris,苹果的 Mac OS X 则是基于 Berkeley Software Distribution(简称 BSD)Unix。

1998年被授予国家科技奖章(左起分别是 Thompson、Ritchie 和克林顿)

BSD 分支​

Unix 是以 C 语言写成的,理论上是具有可移植性的,只要获得Unix的源码,并且针对大型主机的特性加以修改,就可能将 Unix 移植到另一台不同的主机上。

1973年以后,Unix 开始与学术界合作开发,其中最重要的是与加州大学伯克利分校(Berkeley)的合作。伯克利大学的 Bill Joy 在移植 Unix 的过程中加入了很多工具软件与编译程序,最终将它命名为 Berkeley Software Distribution (BSD)。BSD 是 Unix 很重要的一个分支。同时 Bill Joy 也是 Sun 这家公司的创办者。Sun 公司即是以 BSD 开发的内核进行自己的商业 Unix 版本的开发的。(后来可以安装在 x86 硬件架构上面 FreeBSD 即是 BSD 改版而来!)

由于 Unix 的高度可移植性与强大的性能,加上当时并没有版权的纠纷,所以让很多商业公司开始了 Unix 操作系统的开发。但每一家公司自己出品的 Unix 虽然在架构上大同小异,但是却仅能支持自身的硬件,所以,早些年的 Unix 只能与服务器(Server)或者大型工作站(Workstation)划上等号。直到1979年,AT&T 推出了 System V 第七版 Unix,才支持 x86 架构的个人计算机系统。后来因为 AT&T 出于商业考虑,想将 Unix 的版权收回去,因此在第七版 System V 中特别提到了“不可对学生提供源码”的严格限制。

目前被称为纯种 UNIX 的指的就是 System V 和 BSD 这两套。

类 Unix 系统家谱

类 Unix 系统家谱

从 Unix 诞生之日起,各种信誓旦旦的预言就伴随着它,说 Unix 必将衰败,或者被其它操作系统挤出市场。可是在今天,它化身为 Linux、BSD、Solaris、MacOS X 以及好几个其它变种的 Unix,却显得前所未有的强大。

小结​

  • Unix 诞生于 1969 年,此后快速被广泛应用;
  • Unix 一开始是开源的,后来 AT&T 收回版权,并且不公开源代码;
  • Unix 的代码是由 90% 的 C 语言和 10% 的汇编组成;
  • Unix 后来的两大分支:AT&T 的 System V 和 BSD。
阿基米东
📝 作者:阿基米东

GetIoT.tech 创始人,独立开发者,Linux 重度用户,开源软件作者,创业者,INTJ