道生一,一生二,二生三,三生万物。

前言

    UNIX是什么,它是计算机史的一座丰碑,一种文化,一种哲学,一个传奇。它看不见,但万物中都有它的影子,如果没有它,百度,腾讯,阿里可能不会存在,安卓手机,苹果电脑可能不会出现。云计算,大数据,物联网也不会大大改变我们的生活。

    我特别喜欢Linux操作系统,虽然Linux是UNIX衍生出来的,但是继承了UNIX很多优秀的东西,包括UNIX哲学精神“尽量用简单的方法解决问题”

一,诞生

    1965年麻省理工学院希望对当时的兼容分时系统CTSS进行升级,做一套能够向大众提供计算机服务的信息处理工具,他们把这套系统命名为“MULTICS”,由于项目很大,MIT自己搞不定,于是让通用电器和贝尔实验室一起来开发。

UNIX简史_LINUX

    1969年,MULTICS在历经4年的艰苦奋斗后,任然未达到原先规划的设计理想,在加上当时研究成员希望把很多的功能都加入到MULTICS上面,导致MULTICS越来越复杂,越来越难以维护,以至于项目垮掉。贝尔实验室最先退出这个项目。当时贝尔实验室有6位研究员参加了这个项目,其中就包括肯·汤普森和丹尼斯.李奇。这两位大佬都是UNIX之父,都得过图灵奖,丹尼斯.李奇还是C语言之父。

UNIX简史_LINUX_02UNIX简史_LINUX_03

    在项目结束后肯·汤普森还是继续进行研究,但是由于项目失败了,实验室不肯给肯·汤普森经费支持,想买一下硬件,实验室也不肯出钱。无奈之下肯·汤普森找来了破旧的PDP-7计算机来进行开发,这款机器是1964年出产的,距离当时已经5年,早就过时了。只有16kb内存,由于它的图形设计很好,肯·汤普森还设计一款“太空旅行”的游戏。

UNIX简史_LINUX_04

    PDP-7体积巨大,里面多个磁盘高速运转,一不小心磁盘就有可能飞出来将人KO,于是肯·汤普森就写了一个磁盘调度算法。为了测试这个算法,还另外实现的3个工具(代码编辑器,将代码转换为机器语言的汇编器和内核的外层)。一个操作系统雏形就出现了“kernel+shell”。

    经过不懈努力,1969年末,第一版有明确UNIX特征的系统已可以运行,UNIX正式诞生。

二、成长

    虽然UNIX的雏形已经完成了,但第一版Unix直到两年后的1971年才正式运行,这两年间汤姆森和里奇对UNIX进行了持续的改进,但巧妇难为无米之炊,PDP-7根本带不动这么大的系统,于是他们需要一台计算能力更强的计算机。当时在学校和科研机构流行的计算机PDP-10性能强大,非常适合作为UNIX的硬件基础,但是当时PDP-10的价格为50万美元,实验室并不舍得买,再加上有了之前失败的经历。

UNIX简史_LINUX_05

    实验室不想买就得找到一个充足的理由让实验室买。贝尔实验室是个巨大的科研机构,每年都产出大量的专利,专利申请的文档有严格的格式要求,现有的计算机系统无法满足,所以实验室只能购买专门的硬件来处理,但有些格式任然无法实现,比如“标出行号”等。这正是一个机会,于是他们提议买一台PDP-11让UNIX小组在上面编写专门申请专利的程序,PDP-11是当时DEC新出的计算机,但售价只要PDP-10的1/10,只要6.5万美元,最终实验室同意了购买PDP-11。

UNIX简史_C语言_06

    PDP-11买到后,汤姆森和里奇将Unix系统从PDP-7上移植过来,PDP-11有24KB主存储器和510MB的外存。UNIX占16KB,剩下的8KB给用户,正是当时计算机内存有限,所以他们尽力优化算法,最大化的利用空间,这就是为什么UNIX的代码非常间接且高效,而“简洁”也带给了后世的编程哲学。

    汤姆森和里奇在PDP-11上编写程序,白天编写专利申请的软件,晚上写UNIX系统,两个项目在同一台电脑上运行,但是如果发生一个失误,就会造成系统崩盘,文件丢失。由于实验室非常看好UNIX,于是有买了一台PDP-11,这样两项工作就分开进行。

    UNIX的团队创造了很多优秀的文档编辑工具。不但帮助了实验室专利申请,还帮助了实验室的技术书籍的出版。在20世纪七八十年代,贝尔实验室出版了一系列具有影响力的书籍。包括《编译原理》,《编程珠玑》,《计算机算法的设计于分析》等。

UNIX简史_LINUX_07

 

    在Unix的发展中,第6版和第7版是两个重要的里程碑,分别发布于1975年和1979年,这两个版本一个是正是对外发布的版本,一个是后面遍地开花的“类UNIX系统”的分叉点。C语言和C++也是在这两个版本中诞生。第6版包含了众多令人惊叹的功能,如分层文件系统,可兼容的I/O,管道,正则表达式,grep等。

    这里不得不提C语言。在UNIX之前内存十分昂贵,2KB的内存就买到1.6万美元,当时操作系统都是用汇编语言来编写的,系统之间也互补兼容。

UNIX简史_LINUX_08

    直到20世纪70年代,基于半导体和集成电路的新内存技术被广泛使用。让内存价格变得偏移。这样C语言这种高级语言就可以广泛应用在计算机上。C语言的基础是汤姆森发明的B语言,而当时的PDP-11是以字节为单位,而B语言是以字为单位,所以里奇开始对B语言进行改造,并为其编写了编译器,他给这个新语言取名为——New B,New B最后进化成为了C。第6版UNIX的内核就是由9000行C语言和700行汇编语言写成的。C语言让系统的维护和修改变得简单,也可以更方便的移植到不同架构的计算机,打破了操作系统互不兼容的局面。由于C 语言在编写系统软件时得天独厚的优势,到了90年代几乎所有的CPU都是围绕UNIX和C语言来设计的。

三、蓬勃发展

    1975年汤姆森带着UNIX第6版在加州大学伯克利分校教授“操作系统”课程,有个叫比尔·乔伊的研究生对这个系统很入迷。他修改了UNIX的本地版本,添加了一些自己的程序,包括vi编辑器和csh,以及至今任在使用的TCP/IP网络接口,后来他修改的这一版本演化成了UNIX最重要的分支BSD。

UNIX简史_操作系统_09

    但是UNIX向高校提供免费的使用版本,但对商业机构需要收取2万美元的授权费。没成想向高效授权成了一把双刃剑。一方面加速了UNIX的普及一方面却让UNIX的版权保护收到了威胁。

    从第7版开始UNIX有了两条发展路线,官方商业版和BSD版。一方面看到UNIX有利可图,贝尔实验室的母公司AT&T于1984年发行了其第一个商业版本SVR4抢占市场。并注册了UNIX的商标。同时还抢先一步制定了Unix的使用标准。另一边BSD也不弱,来了一个“大洗稿”,将UNIX进行重构,用新代码来重写相同的功能,还在1991年发布了不包含AT&T材料的UNIX版本,不但一举打赢了跟AT&T的专利官司,还缔造了庞大的BSD家族,FreeBSD,OpenBSD,NetBSD,就连苹果操作系统MacOS的核心Darwin所使用的NextSTEP也是BSD的衍生版本。

UNIX简史_LINUX_10

    而BSD的创作者比尔·乔伊凭借BSD建立了“SUN微系统”公司,他的工作站在市场上大受欢迎,让它的股价一度超过了IBM,从80年代末到90年代初,围绕UNIX的版权之争旷日持久,一团乱麻。最后以Novell买下了UNIX的版权,而不打算继续扯皮而告终。在这场持续了10年的版权战中还诞生了另外两个最著名的UNIX分叉——MINIX和Linux。

    受到BSD的启发,民间高手纷纷推出自己的“类Unix系统”。荷兰的一个大学教授安迪·塔内鲍姆为了让学生更好的理解操作系统的原理,重写了一个不包含任何AT&T源代码的UNIX系统取名为“小Unix”(即MINIX)。

UNIX简史_C语言_11

    芬兰一位21岁的大学生林纳斯·托瓦兹因不满UNIX的限制许可,同样觉得自己动手开发一个“类UNIX系统”,在一个暑假没日没夜的开发中,最终开发出了Linux,如同当初汤姆森和里奇没有想到UNIX的成功一样,林纳斯也没想到自己做着玩的东西竟然能以商品化操作系统的形态运行在今天全球数10亿台设备上,从谷歌,亚马逊,Face Book的服务器到汽车,电视,手机,电脑,移动设备等,Linux操作系统无处不在。Linux从当前的几千行发展到现在的3000多万行。

UNIX简史_简史_12

    到今天UNIX衍生出来了许多优秀的操作系统,像Linux,MaxOs,BSD和AIX等,所有“类UNIX系统”组成了一个庞大的操作系统家族。

UNIX简史_简史_13

 

结语

    一群天才为了自己的梦想,为了自己的爱好,在艰苦的环境中创造出一个又一个的传奇。但愿未来能有出现越来越多的天才,来创造更多的传奇。

 

 

参考文献

  • 刘瑞.Linux的发展历史及与unix的渊源
  • 刘瑞.Linux发展历史年表
  • C语言中文网.C语言与UNIX系统的关系
  • 百度百科.UNIX发展历史
  • 风萧萧2112.Unix/Linux的发展史介绍
  • 程序猿IT.Unix发展历史
  • 51CTO.yjplxq.UNIX发展史(BSD,GNU,linux)
  • 雪球.书生剑客.比尔·乔伊与BSD UNIX
  • CSDN.史话君.UNIX传奇
  • 趣谈shell.Unix和BSD历史发展介绍
  • 百度文库.杰物.UNIX发展史

 

UNIX简史_C语言_14