相信大家对 Linux 再熟悉不过了。我们都知道 Linux继承自 Unix,但其实他们上一代还有一个 Multics。从最早的 Multics 发展到最早版本的 Linux,用了 28 年。这其中有四位天才级大师的贡献功不可没。现在就大家一起来回顾一下这段历史
操作系统鼻祖——Multics
Multics 全称是 MULTiplexed Information and Computing System。维基翻译过来是多任务信息与计算系统。它是一套分时多任务操作系统。那到底是个啥东西呢?可以简单的理解是个支持并发的操作系统。举个例子,我们假设现在网易云音乐是这个大的系统,如果我们是个单任务系统的话,现在你要听歌,但是发现现在有一个人已经在听歌了,那么你就只能等他听完了,没人在线了,你才可以听。而如果是多任务的话,咱们可以这样,你听歌的同时,他也在听,因为计算机的处理速度非常快,所以它在切换任务的时候。你不会感觉到有任何卡顿现象。这个项目在 1964 年由贝尔实验室麻省理工学院及美国通用电气公司共同参与研发。目的是实现连接 1000 个终端机器,支持300个用户同时上线,但是这个项目进度太慢了,最终这里面的人被裁员,同时贝尔实验室的率先退出此项计划
Unix 的创造
左:Thompson | 右:Ritchie
这其中有两位大佬就是实验室的成员,也是我们今天介绍的两位主角。一个是肯尼斯·蓝·汤普逊(英文名:Kenneth Lane Thompson),另外一个是丹尼斯·麦卡利斯泰尔·里奇(英文:Dennis MacAlistair Ritchie),Thompson 在业余时间“不务正业”地弄了一个“星际旅行”的游戏程序。
它之前在 Multics 上弄的时候的时候,发现玩起来非常不爽,就是会响应有时候快,有时候慢。就像你玩游戏的时候老是有延迟,你肯定不爽啊。他在库房发现一台闲置的 PDP-7 机器,想着自己弄一个简化版本的操作系统,只支持单机即可。于是便动手开干,要知道那时候不像现在什么东西都给你准备好了,他和他的搭档就一起一个个实现文件系统、进程、设备文件、命令行解释器等等工具程序。(笔者OS:大师就是大师工程能力令人乍舌!!!)完成之后,他让同事们一起玩他的游戏。但同事对他的这个游戏没有什么兴趣,反倒对这个系统有兴趣。同事们发现他这个相当于是 Multics 的简化版本,便戏称它这个是 "UNiplexed Information and Computing Service”,即没路信息计算系统,缩写为Unics,取其谐音Unix,这就是 Unix 的由来。此时已经是 1970 年了。小伙伴们可以打印一下计算机上的最早时间,你会发现,最早的时间就是 1970 年,即 Unix 诞生元年。Kenneth 在写完操作系统开发后,觉得 Unix 需要一个系统级的编程语言,于是就创造了 B 语言 (Basic Combined Programming Language 基本组合编程语言),但后面丹尼斯发现B语言只适合处理某些种类的问题,具有自身的局限性,于是便创造了新的语言,就是我们今天熟知的 C 语言
Unix BSD 分支的夭折
Unix 这个操作系统非常好用,于是便在贝尔实验室内部流传开来,并经过不断改良。到 1974 年的 7 月贝尔实验室公开了第五个版本的 Unix ,这首先引起了学术界的关注,并向其索取源码用作教育目的。1978 年伯克利大学推出了以 Unix 第六个版本为基础的拓展版。于是首个 Unix 拓展分支出现,并命名为 BSD (即 Berkeley Software Distribution 伯克利分发版)。80 年代后期,几个伯克利毕业的同学,成立了一家Berkeley Software Design Inc.公司,简称 BSDi。专门销售 BSD 的商业版本。当时贝尔属于 AT&T ,而AT&T被《谢尔曼反托拉斯法》规定了不能销售除了电话机电报机等之外的商品。后来 AT&T 解体了,Bell 可以售卖 Unix 了。于是把 BSD 告上了法庭,这对 BSD 来说,是一个致命的打击。并且,更过分的是,Bell 把这个价格定得死贵死贵的,一份授权 4 万美元,这让当时很多的研究者和学者望而却步。也是 Unix 厄运的导火索
Gnu计划
在 Unix 开始收费的同时,我们今天要聊的第三位老哥登场了——理查德·马修·斯托曼(英文名:Richard Matthew Stallman),他发起了GNU 计划, 目标是创建一套完全自由的操作系统。同时开创了 Copyleft 的概念。你看一下它的 logo 就很有意思。
看图思意,我们可以理解它是反著作权,但其实它并不是说要作者放弃著作权。它的核心其实是需要使用著作权法的原则来保护使用、修改和分发自由软件的权利。而创造这个之初,其实他想要实现的,就是一个类似 Unix 的自由的操作环境,注意,这里的核心是自由。这个可以从 《Gnu 宣言》中的这段文字窥见一二——“重现当年软件界合作互助的团结精神”
Gnu 发起后,斯托曼和他的小伙伴陆续把计划中的编辑器、编译器和 shell 完成了。唯独缺乏操作系统核心。他们陆续尝试了基于 Hurd、GNU Mach 内核进行开发,认为可以借此加速操作系统的开发。但因为一直不确定卡内基梅隆大学何时要将核心源代码发布,造成计划胎死腹中
Linux 的诞生
时间推移到 1991 年,一名 21 岁就读赫尔辛基大学的计算机科学专业的学生——林纳斯·托瓦兹(瑞典语:Linus Benedict Torvalds)登场了,他当时发现 Minix (塔能鲍姆教授为了教学之用而创作的类 Unix 的操作系统)一些不完善的地方。但塔能鲍姆教授觉得他写的这个东西,仅仅是用作教学,因此也不准备把它完善。这个时候,托瓦兹想着要不自己实现一个?刚开始就打算写一套简单的操作系统内核,并马上着手开干。8月25日,他在 comp.os.minix 发了一个帖子:
我在做个(自由的)操作系统(就是个兴趣爱好,我不会搞得像GNU那么大那么专业),打算让它工作在386 AT平台上。它从四月就开始酝酿了,马上就快好了。我想要那些喜欢或不喜欢minix的人的意见,因为我的系统和它有点类似(同样的文件系统的物理布局——由于实际原因——还有些其他的东西)。
我现在已经移植了bash(1.08)和gcc(1.40), 而且看起来奏效了。这意味着我会在几个月内得到一些实用的东西。“……”是的——它没有任何minix代码,并且它有一个多线程的fs。它不可移植(使用386任务切换等),而且它可能永远不会支持除AT硬盘之外的其他东西,因为我只有这些:-(。[1]
同年九月份,Linux 内核版本 0.01 在芬兰大学和研究网络的 FTP 服务器上发布,有 10239 行代码,一个月后, 0.02 版本的内核版本发布。不愧为 Linux 操作系统之父,这么短的时间内就可以把一个操作系统的核心弄出来
Linux 内核是在遵守 Gnu 通用公共许可证之下发布的, 而这边 Hurd 内核的计划严重延期了。慢慢的,Linux 则替代了原来要开发的 Hurd 内核。至此,Gnu 计划基本完成。此时操作系统命名为 Gnu/Linux。但人们却往往把它简称为 Linux,求斯托曼宝宝的心理阴影面积。要说名字叫法这个事,真不是偶然,比如 Uber 这个第一个词读 “污”,但是国内很多人把他读作“优”,后来官方也只能发布官方版为“优步”,类似的还有 wiki、ubuntu 等。有兴趣的小伙伴可以自己去了解下
1994 年 3 月 14 日,Linux 内核 1.0.0 发布,共 176250 行代码。也就是正式版。至此之后 Linux 得到了长足的发展,也影响我们无数人的工作方式,毫不夸张地说,Unix 以及 Linux 的创造和发展,对整个社会的历史进程,有着深远的影响。而他们在一开始,其实不过是汤普逊想实现一个游戏程序,托瓦兹不过是想参照着 Minix 并完善它没有实现的功能罢了,所有说,对程序员来说,适当的“不务正业”,可能会有意外的惊喜
总结
纵观 Linux 的早期发展史,从肯尼斯·蓝·汤普逊、丹尼斯·麦卡利斯泰尔·里奇、理查德·马修·斯托曼以及林纳斯·托瓦兹这四个天才级黑客身上。我们会发现他们的一些共同特质
首先就是惊人的执行力,要知道,在他们那个时期和圈子里。其实是有很多人能够做到和他们一样的事情。但为什么是他们首先完成了这件事并名留史册?机会永远留给有准备的人没错,但其实这句话不完整,机会其实是留给第一时间抓住它的有准备的人
其次培养自己的兴趣爱好。不管是汤普逊想实现一个星际旅行游戏,还是托瓦兹想做个个人的操作系统。它的源动力都来自于他们的兴趣爱好。很难想象一个人在自己不感兴趣的点上,能做出点什么成绩。因此,我们应该在日常保护好自己的兴趣爱好。他不一定能让你实现可见的财富上的收益,但却可能让你成为一个更有趣的人
最后多分享,保持开放的心态。Unix 之所以胎死腹中,就是因为早期的闭源,错过了最好的发展机会。而斯托曼、托瓦兹倡导的开源使得 Linux 得到了繁荣发展。因为开源,能够让更多的人看到你的代码,互相学习交流,从而保持整个社区的长足进步
以上即是 Linux 的早起发展史,希望对你有所启发
作者:张小吉