40岁的Unix还能走多远
文章来源: | 发布时间:2009-09-03 | 【打印】 【关闭】
1969年8月,当忙碌了整整一个月的Ken Thompson走出实验室的时候,他绝对没有想到,他在这一个月所做的事将给整个IT产业带来如此深远的影响。在这一个月里,他把自己所有关于操作系统的想法付诸实践,开发出了至今仍是大型关键核心业务系统最可信赖的运行平台Unix的第一个版本。这项工作后来帮他和他的同事Dennis Ritchie获得了1983年的计算机领域的最高奖项图灵奖,而他当时所采用的众多设计概念影响了一代又一代程序员,至今仍被奉为圭臬。
Unix问世
Ken Thompson是AT&T下属的贝尔实验室的程序员,在此之前,他和他的同事Dennis Ritchie在开发一个名为Multics分时系统,由于项目进展非常不顺,贝尔实验室取消了这一项目。闲下来的Thompson和Dennis Ritchie对当时流行的批处理操作系统不感兴趣,决定开发一种新的操作系统。经过一段时间的探讨,Ken Thompson用汇编语言为DEC的PDP-7小型机开发出了后来命名为Unix操作系统的第一个版本,包括一个外壳程序(Shell)、一个编辑器和一个汇编程序(assembler),每一个用了差不多一个星期的时间。随后的几年里Ken Thompson和Dennis Ritchie这对搭档在他们的同事Doug McIlroy、Joe Ossanna、Rudd Canaday的帮助下对这个操作系统进行了不断修改和完善。
新操作系统借鉴了Multics的一些设计思路,不过,最为重要的是它坚持“少就是好”的理念。5年后,Ritchie和Thompson在计算机协会(ACM)的杂志CACM上介绍了当时的设计思路::“需要用户与之交互的操作系统不仅应该对计算机本身要求不高,而且也要让人用起来很容易。我们希望Unix的用户发现它最大的特点就是简便、易用而且美妙。”
很显然,Unix做到了。Unix后来成为IT产业的基石,被广泛地部署在大学、政府部门和企业的各种服务器和工作站中,而且其影响还表现在,Unix所采用的设计模式让当时的软件设计人员重新思考如何编程。
当然,Unix的成功不是一下子发生的。1971年的时候,这个操作系统被迁移到比PDP-7功能强大得多的PDP-11小型机,为了让贝尔实验室专利部门的打字员可以用来处理一些文档,新增了文本编辑器和文本排版工具,这是该操作系统第一个走出研发团队。1972年,Ritchie在Thompson早期发明的B语言的基础上发明了高级编程语言C语言,随后Thompson用C重新改写了程序,这使得Unix的可移植性大大增强了。这时这个操作系统也有了自己的名字“Unics”,后来逐渐变成了今天的Unix。
不过,直到这时Unix仍没有走出贝尔实验室,而真正把Unix带向世界的则是Ritchie和 Thompson1974年7月发表在CACA杂志上的文章《Unix分时系统》,它让整个IT业界为之轰动。
黑客的乐园
当时,人们用“黑客”来形容那些具有非凡的创造力和顽强的毅力、能解决一些常人无法解决的问题的软件工程师。按照这一定义,Thompson和Ritchie是真正的黑客,他们所采用的方法、编写的代码让那时的大学生为之着迷,随后一些资金不多的初创公司也学习和借鉴这些方法和代码。
“几乎从一开始,Unix就是能够自我维护的,” Thompson和Ritchie在他们发表在CACM上的论文中写到,“因为所有的源代码都是可以拿到的,可以很容易地修改,因此,如果我们想到了一个非常好的想法或者听到一些非常好的建议,我们非常乐意修改或者重写这个系统。”
当时在贝尔实验室做程序员、今天仍然在AT&T工作的David Korn回忆说: “Unix最大的一个特点是其中的工具可以很容易地被修改,或者用一个更好的工具替代。”Korn不久开发出了一个很有影响力的Korn shell(今天已经成为一个开源软件),从本质上说,这就是一个能指挥Unix运行的编程语言。
毋庸置疑,Unix给当时的程序员带来了深远的影响。Unix首创的很多概念至今仍在沿用。比如,为了把一个程序的输入引入另一个程序中,Unix在1973年采用了“管道(Pipeline)”这个概念,在今天的很多操作系统中仍然可以看到,包括所有Unix的变种以及Linux、DOS、Windows等。 Unix的另一个特点是它并不需要一个非常昂贵的大型机来运行。实际上,Unix最初就是为计算能力很弱的小型机DEC PDP-7开发的,因为当时Thompson和Ritchie手头只有这样的计算机。
正是由于Unix简单、容易修改、对资源要求不高,而且源代码基本上免费的,因此很多大学的研究人员开始使用Unix,当时新成立的一些公司(如Sun)和很多今天已经不在、从事科学计算的公司也采用Unix。
Unix开枝散叶
最开始Unix是一种免费的操作系统。因为1956年美国联邦政府通过一项法案禁止 AT&T提供电话以外的业务,所以,AT&T是不允许参与计算机有关的业务的。在Unix刚刚开发出来的时候,AT&T也没有太看重它,但到20世纪70年代末,AT&T意识到了它的商业价值。而AT&T的律师也对1956年通过的那个法案做出了新的有利于自己的解释。于是,1979年年初在Unix v7发布之后,AT&T修改了软件授权协议,禁止大学使用Unix源代码教学。不过,这对大学并不是问题,因为可以继续用Unix v6。
此后Unix出现了一个很重要的分支。20世纪70年代在加州大学伯克利分校读研究生的Bill Joy从贝尔实验室拿到了一份Unix的拷贝,他认为这个操作系统非常适合作为他的Pascal编译器和文本编辑器的运行平台。因此,他和伯克利分校其他一些人一起对Unix进行了修改和扩展,由此诞生了Unix的重要分支: BSD (Berkeley Software Distribution) Unix。1978年,BSD推出,每份拷贝50美元。
这样,到1980年有了两个主要的Unix版本,一个来自伯克利,另一个来自AT&T,随后不久更多的Unix开始涌现,并演变为“Unix战争”: 1982年,Bill Joy与麦克尼利等联合创建Sun,推出了一种运行在工作站上的BSD版本,命名为SunOS(Solaris是大约10年以后的事情)。随后,AT&T发布了非常具有影响力的Unix System V,在它的基础上后来诞生了IBM AIX和惠普的HP-UX。不过,事情总是有好有坏: “Unix战争”好的方面是,软件人员很容易拿到Unix,对它按照自己的要求进行修改;不好的是,Unix出现了很多分支影响了可移植性。
值得一提的是,1987年荷兰阿姆斯特丹市Vrije大学计算机系教授Andrew Tanenbaum开发出一个与Unix非常接近的操作系统Minix。这个运行于Intel 80286微处理器上的操作系统是一个开源软件,到1991年Linus Torvalds正是基于Minix开发出了今天广泛使用的Linux。