UNIX传奇

在当下我们生活中大部分的电子产品里面跑的系统都或多或少都与UNIX有关,如智能家电、洗衣机、空调、汽车等,一句话UNIX的DNA无处不在。这本书《UNIX传奇》主要介绍了UNIX发展的过程,他是一本非常适合计算机专业的学生、运维工程师和架构师背景的阅读的一本书。本书作者介绍 https://www.cnblogs.com/aozhejin/p/16380592.html 同时他也是AWK(UNIX 操作系统的核心组件之一)的作者之一。

UNIX的演变过程

UNIX诞生于1969年,距今50+年。以下是系统的演变过程,可见当前Linux、MacOS追根溯源都与它有关系。(以下截图来源于网络)

三个重要的人物

UNINX的发展由来离不开三个人,他们分别是肯汤姆森、丹尼斯里奇和道格拉斯·麦克罗伊:

贝尔实验室

贝尔实验室制度宽松,但到了20世纪80年代早期至中期某个时候,出台了新规:员工必须一直佩戴胸牌。这样做无疑能有效鉴别出外来人员,但员工并不乐意照办。有位同事(在此隐去姓名)用万能胶把胸牌粘在额头上,还有一位则把胸牌别在胸毛上,在被要求出示时才露出来。以下是作者的工牌。

UNIX名字的来历

UNIX系统最开始叫UNICS ,UNICS后来变成了Unix,这名字显然更好。据传,AT&T的律师们不喜欢Unics这个词,因为它音近eunuchs(有宦官、太监的意思)。

以下引用自UNIX传奇内容。

1
2
我记得自己站在办公室门口,和几个人讨论,其中好像有肯、丹尼斯和彼得 · 诺伊曼。那时系统还没名字。(如果我记忆准确的话)我提议,从拉丁词根看,Multics意图提供“包罗万象”的功能,而新系统顶多择一而从,应该拿uni来替代multi[3],叫它“UNICS”。
也有人说,UNICS这个名字是彼得·诺伊曼想出来的,代表“毫不复杂的信息与计算服务”(UNiplexed Information and Computing Service)。彼得回忆说:

UNIX手册

在线手册是UNIX早起成果之一,50年前的样子和现在。如cat命令50年来没有变过,只添加了很少的可选(也许并不必要的)参数。

BASH来历

1976年,刚刚加入1127中心的史蒂夫·伯恩(Steve Bourne)编写了一个新shell。

它融合PWB shell的功能,同时还有其他重大改进。他的目标是保留现有shell易于交互的优点,同时也使其成为一种完全可编程的脚本语言。

史蒂夫的shell提供了控制流结构,包括if-then-else、while、for和case。它还支持变量,其中一些变量由shell定义,另一些变量则可以由用户定义。引用机制[3]也得到了加强。最后,我们把它改得像其他程序一样能够成为管道执行流程中的过滤器。

结果,伯恩的shell程序(被简称为sh)很快取代了第6版shell。Bash(Bourne Again Shell的简写,意为“伯恩再来shell”)已经成为大多数Linux和macOS用户事实上的标准shell。

Uninx 战争

在20世纪80年代后期,许多Unix系统的供应商使用Unix商标名称,并提供起码是源自贝尔实验室第7版系统的软件。然而,版本之间,尤其是AT&T的System V和伯克利发行版之间,存在不兼容问题。所有各方都同意,急需制订一套共同标准。至于标准该是什么样子,当然没有统一意见。
行业联盟X/Open成立于1984年,冀望于打造标准源代码环境,使程序代码无需修改即可在任何Unix系统上编译。AT&T和一些盟友成立了自己的团体Unix国际(Unix International),颁布标准,与开放软件基金会(Open Software Foundation)制订的标准对打,结果是出现了两个相互竞争的不同“开放”标准。POSIX(Portable Operating System Interface,可移植操作系统接口)标准和由X/Open 管理的“单一Unix规范”(Single Unix Specification)诞生了。

Minix和Linux

AT&T试图从软件中赚钱,对Unix的许可限制越来越多,其中也包括高校如何使用Unix的限制。BSD没有这种限制,优势顿显。同时,AT&T和BSD之间争斗不断,也推动其他人试着推出自己的类Unix系统。独立创建的版本不受商业限制,因为它们只使用系统调用接口,而不使用其他人的代码。

1987年,安迪·塔嫩鲍姆在阿姆斯特丹自由大学创建Minix。Minix形似Unix,在系统调用层面兼容Unix,但完全重新编写,采用不同的内核组织方式。

Minix相对较小,为了帮助它的传播,安迪写了本教科书,对标10年前莱昂斯那本Unix评注。Minix源代码免费提供——其中一版书附赠十几张软盘,可以加载到IBM PC上,运行Minix。我现在还保留着安迪那本书的首版,甚至可能还有Minix软盘。

今天,Minix依然“健在”,用于操作系统的教学和实验。

Linux
一位21岁的芬兰大学生,不满AT&T限制性许可,受Minix鼓舞,独立开发出一套类Unix系统,在系统调用层面上兼容Unix。1991年8月25日,林纳斯·托瓦兹(Linus Torvalds)在Usenet新闻组comp.os.minix上发布了一个项目,如图所示。


致Minix用户:
我正在做一个386(486)AT克隆机的(免费)操作系统(只是爱好,不会像gnu那样大而专业)。从4月开始酝酿,现在开始准备了。我想知道大家对Minix里面喜欢/不喜欢的东西有什么反馈,因为我的操作系统和它有些相似(同样的文件系统物理布局(基于务实原因))。
目前我已经移植了bash(1.08)和gcc(1.40),看来一切正常。这意味着我将在几个月内得到一些实用的东西,我想知道大多数人想要什么功能。欢迎任何建议,但我不会保证我会实现它们。:-)


如同当年肯和丹尼斯没能预测Unix的成功一样,托瓦兹也没料到,他做着玩儿的系统竟然有着非凡未来。系统代码从最初的几千行发展到如今超过两千万行。托瓦兹是主要开发者,也是全球开发者社区的协调人,负责维护和增强这个系统。托瓦兹也是Git的创造者。Git是软件系统中使用最广泛的版本控制系统,用于跟踪代码变化,当然也包括Linux的代码变化。

推荐扩展阅读资料
硅谷简史,第22章,贝尔实验室推动操作系统UNIX和编程语言C的诞生与成长。