作者 | Aholiab 责编 | Carol
出品 | CSDN(ID:CSDNnews)
道生一,一生二,二生三,三生万物
——老子
与人类的历史相比,软件的历史很短,但如果给软件的历史找一个奇点,那这个奇点就是UNIX。
UNIX是什么?它是计算机历史上的一座丰碑、一种文化、一种哲学、一个传奇。它看不见,但万物中都有它的影子。如果没有它,谷歌、脸书、亚马逊可能不会存在;Office办公软件可能要晚很多年出现;苹果电脑也不再优雅,因为没有了MacOS;导航软件、智能家电、物联网也不会大大改变人们的生活;而如今人人离不开的手机,也会因缺少安卓系统而少了很多精彩。
自1969年在贝尔实验室的阁楼中诞生以来,UNIX的发展远远超出了创造者们的想象。本期视频就让我们走近UNIX的传奇,回到计算的「原点」。
点击视频更精彩👇👇
UNIX的起点
1969年的美国是传奇的一年,阿姆斯特朗在月球迈出了「人类的一大步」;胡士托音乐节上,50万人在阴雨中,被「和平、反战、博爱」点燃;在纽约一个叫「石墙」的酒吧里,同性恋者与警察的对抗,成为了世界同性恋权利运动的起点。在这样的背景下,一个运行在一台过时计算机上的操作系统的诞生,并没有引起人们的注意,但随着50年的发展,它却真正改变了世界。
上世纪60年代,麻省理工大学希望对当时的「兼容分时系统」CTSS进行升级,做一套向大众提供计算服务的信息处理工具,他们把这套系统命名为MULTICS。这么大的项目MIT一个人肯定搞不定,所以它拉上了通用电气和贝尔实验室。
可能是劲儿使大了,什么功能都想往MULTICS上加,导致它越来越复杂,最后变成了一个巨大的四不像。
眼看着MULTICS要跨,贝尔实验室率先决定退出这个项目。当时实验室里有六七个研究员参加了MULTICS项目,其中就包括肯·汤普森和丹尼斯·里奇。虽然项目不做了,但肯·汤普森仍然想继续研究操作系统,但一朝被蛇咬,实验室死活都不愿意给汤普森批预算,想买硬件更是没门。
无奈之下,汤普森只好找来一台没人用的PDP-7计算机来折腾,这款机器是1964年出产的,距离当时已经五年,早就过时了。它只有16KB内存,而且还是做电路设计用的。好在它的图形显示非常漂亮,汤普森就为它写了个「太空旅行」的游戏。
跟今天小巧的电脑不一样,PDP-7十分巨大,上面高耸着磁盘驱动器,里面是高速运转的磁盘,一不小心飞出来,可以把人瞬间KO。汤普森想这也太危险了,于是他写了个磁盘调度算法;为了测试这个算法,他还需要写一个批量写数据的程序。这个程序包含三个部分:a)用来创建代码的编辑器;b)将代码转化为机器语言的汇编器;c)再加上内核的外层。要是一周写一个,三周就能写完。一个操作系统的雏形基本就实现了。
巧的是,这个时候汤普森的老婆正好休假,要带着儿子去加州看公婆,来回正好三周。
1969年末,第一版有明确UNIX特征的系统已可以运行,UNIX正式诞生。
从PDP-7到PDP-10
虽然UNIX的雏形完成了,但第一版UNIX直到2年后的1971年才正式运行。这两年间汤普森和里奇对UNIX进行了持续的改进。但巧妇难为无米之炊,PDP-7根本带不动这么大的系统,当务之急是要换一台更好的计算机。
他们首先句瞄上了当时在高校和科研机构里最受欢迎的PDP-10,它的性能强大,当然价格也不菲,要50万美元。
贝尔实验室是个巨大的研究机构,每年都会产出大量的专利。专利申请的文档有严格的格式要求。现有的计算机系统无法满足,所以公司只能购买专门的硬件来处理,但有些格式仍然无法实现,例如「标出行号」等。
这不正是个机会吗,于是他们提议,可以买一台PDP-11,让UNIX小组在上面编写专门申请专利的程序。PDP-11是当时DEC新出的计算机,但售价只有PDP-10的十分之一,只要6.5万美元。
PDP-11到手后,汤普森和里奇将UNIX系统从之前的PDP-7上移植了过来。汤普森和里奇在新电脑上的工作卓有成效,他们白天写专利申请软件,晚上写UNIX系统。两项工作在同一台计算机上运行,互不干扰,一个小小的失误就会造成系统崩溃、文件丢失。领导也对他们的工作很满意,终于批准他们再买一台PDP-11用于UNIX的研发。
UNIX的重要里程碑
在UNIX的发展中,第六版和第七版是两个重要的里程碑,分别发布于1975年和1979年。这两个版本,一个是正式对外发布的版本;一个是后面遍地开花的「类UNIX系统」的分叉点。C语言和C++也是在这两个版本中诞生的。
第六版包含了众多令人惊叹的功能,如分层文件系统;可兼容的I/O;管道、正则表达式、grep等。但最引人注目的,还是C语言。
C语言的基础是汤普森发明的B语言,它跟Fortran很像。在PDP-11到货后,里奇发现它的操作单位是字节,而非之前的字(PDP-7的块单位是18位,约2字节)。B语言并不适合以字节为操作单位的PDP-11,所以开始着手对B语言进行改造,并为其编写了编译器。他给这个语言起名为NewB,NewB最后进化成了C。第6版UNIX的内核就是由9000行C语言和700行汇编语言写成的。
C语言让系统的维护和修改变得更加容易,也让其可以更方便地移植到不同架构的计算机,打破了操作系统互不兼容的局面。
1975年,汤普森带着UNIX第6版在加州大学伯克利分校教授「操作系统课程」,有个叫比尔·乔伊的研究生对这个系统很入迷,他修改了UNIX的本地版本,添加了一些自己的程序,包括vi编辑器和csh,以及至今仍在使用的TCP/IP网络接口。后来他修改的这一版本演化成了UNIX最重要的分支BSD(伯克利发行版)。
从第7版开始,UNIX有了两条发展线:官方商业版和BSD版。
第7版是最后一个发布并被广泛使用的UNIX的版本。第8版、第9版分别于1985年、1986年问世;1989年,第10版完成,这是最后的科研版本,但没有对外发行。此后,肯·汤普森等人开始研发新的操作系统——Plan9,此项目创造了UTF-8编码,今天互联网上几乎所有文本都是用它来编码的。
第7版之所以有两条路线,一方面,是看到UNIX有利可图,贝尔实验室的母公司AT&T于1984年发行了其第一个商业版本SVR4抢占市场,并注册了UNIX的商标;另一边BSD也不弱,先后对UNIX进行重构,用新的代码来重写相同的功能,还在1991年发布了不包含AT&T专利材料的UNIX版本,不但一举打赢了跟AT&T的专利官司,还缔造了庞大的BSD家族——FreeBSD、OpenBSD、NetBSD。就连苹果操作系统MacOS的核心Darwin所使用的NextSTEP也是BSD的衍生版本。
从80年末,到90年代初,AT&T围绕UNIX的版权之争旷日持久,一团乱麻。最后以网威买下了UNIX的版权,而不打算继续扯皮而告终。
在这场持续了十年的版权拉锯战中,还诞生了另外两个最著名的UNIX分叉——Minix和Linux。
如当初汤普森和里奇没有想到UNIX的成功一样,林纳斯也没想到自己做着玩的东西竟然能以商品化操作系统的形态,运行在今天全球数十亿台设备上。从谷歌、亚马逊、脸书的服务器;到汽车、电视、手机、Kindle的操作系统。
Linux早已成为了互联网基础设施的一部分。它的代码也从当年的几千行,发展到了今天的两千多万行。
UNIX即出,则万物生
会不会有另一个UNIX横空出世,在几十年内占领世界?历史是否会重演?不太可能。但可以肯定的是,操作系统会变得更好,只是同时继续携带这大量的UNIX的基因。UNIX的成功技术固然重要,但更多来源于贝尔实验室伊甸园般的研发环境和一系列幸运的意外。
在一个远离喧嚣的园区中,一群天才没有生存压力、没有KPI、不需要做工作计划,可以年复一年的根据自己的兴趣研究一个课题。晶体管、太阳能电池、负反馈放大器、激光机、手机、通信卫星,都是那个时期的重要发明。从贝尔实验室中走出了9个诺贝尔奖。
更有甚者,喜欢飞行的汤普森,还带着一帮研究员成立了一个「1127空军」(1127:贝尔实验室计算科学研究中心内部编号)。在苏联解体后,他还专门跑去俄罗斯开了一次米格战斗机。
如今UNIX早已化为了DNA写进了互联网的基因中,他是「道」,一既出,则万物生。
点击视频更精彩👇👇
福利·福利·福利
本视频内容基于《UNIX传奇》;作者:Brain Kernighan;中国工信出版集团、人民邮电出版社。
3月14日前,在本文下留言的小伙伴,抽取点赞最高的5个留言赠送本书每人一本,欢迎踊跃留言、点赞、转发!
☞15 万个监控摄像头被黑,医院、学校、监狱都被看得一清二楚!
☞RedMonk 编程语言排行榜:JS持续霸榜,Dart 快速上升!
☞CTO 写的低级 Bug 再致网站被黑,CEO 的号都被盗了!
☞百度92年程序员因“篡改数据”被抓;运营商辟谣首批 5G 用户被抛弃;特斯拉回应上海工厂摄像头被入侵 | 极客头条