40岁的Unix还能走多远?
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。
Unix战争
在20世纪80年代中期,包括联邦政府部门在内的用户开始抱怨,尽管从理论上说,Unix是一个可以自由迁移的操作系统,而实际上,供应商们通过定制Unix的功能和API想方设法把用户锁定在自己的Unix版本上。
于是,1987年贝尔实验室下属的Unix System实验室开始与Sun联手整合两个主要的Unix版本,两年后发布了Unix System V Release 4.0,其中综合了System V Release 3、BSD、SunOS以及Microsoft的Xenix等操作系统中的诸多功能。
而另一些Unix供应商由于惧怕AT&T与Sun的联合,成立很多联盟与之竞争,包括X/Open、开放软件基金(Open Software Foundation)等,纷纷号称自己的是标准,一时间唇枪舌战非常热闹,史称“Unix wars(Unix战争)”。
很显然,Unix阵营没有消除各自的分歧、真正制定出一个Unix系统的规范。直到1993年,随着微软推出企业级的32位微处理器操作系统Windows NT从而把微软的触角伸向原本属于Unix的领地,整个Unix阵营才真正意识到威胁,所有主要的Unix供应商联合起来共同发起了通用开放软件环境(Common Open Software Environment)行动,随后的一年里,随着AT&T和Sun支持的Unix国际集团(Unix International Group)与开放软件基金(Open Software Foundation)合并为The Open Group,由它负责认证Unix系统,相互之间的争论才逐渐平息下来。
然而,此时的联合已经有些晚了。除了微软以外,从Tanenbaum博士的Minix演化而来的开源操作系统Linux也已经逐渐成长壮大,成为Unix不可小视的对手。
Unix的未来
由于长期多种Unix版本相互竞争影响了Unix的可移植性,同时,Linux因为成本上的优势以及Windows在X86平台上的天然优势,使得人们开始逐渐远离Unix。2009年1月,Gartner公布的一个调查结果显示,Linux继续受到用户的欢迎,Windows的装机量也在逐步增加,而Unix的用户将逐步减少。
“Unix有悠久的历史,然而,现在尽管我们不能说它在退出历史,但Unix所受到的冲击肯定会越来越大。”Gartner分析师George Weiss说:“Linux的势头就很猛。虽然Linux没有像Unix那么长的开发、优化和测试历史,但正在接近甚至达到与Unix相似的性能、稳定性和可扩展性。”
同样,Windows也不可小视。Weiss说,由于硬件成本的优势,向通用的X86平台迁移的用户越来越多。“可扩展的架构、集群、云计算以及X86平台上的虚拟化,如果把所有这些技术趋势综合到一起就会发现,操作系统的选择都是围绕Windows和Linux的。”
“例如,最近思科发布了它的统一计算架构,把网络、存储、计算机和内存统一到一起,其中就没有Unix的位置,但是可以在X86平台上运行Linux和Windows。因此,Intel代表Linux阵营正在取得Linux与Unix之间的这场战争的胜利。”
然而,代表Unix阵营行使Unix认证的The Open Group却丝毫不愿意对Linux让步,声称Unix是那些追求高性能、高扩展性和高稳定性的关键应用程序的最好选择,而Linux则只适合一些小型、非关键应用。
AT&T的Korn是少数仍拥护Unix的人,他认为,多年来Unix一直具有的优势是,它可以非常容易地分成小的软件发布,这一优势将保证Unix仍然向前发展。他说:“Unix中的‘管道’哲学在云计算环境中仍然有用,在这样的环境中,你可以构建一些很小的可重用的应用,而不再是那种很庞大的不可分割的程序。”
Unix大事记
● 1969 Ken Thompson用汇编为DEC PDP-7小型机编写出Unix的第一个版本。
● 1970 操作系统被命名为Unics,后来演变成了今天的Unix。
● 1971 Unix被移植到PDP-11小型机,Unix程序员手册第一版出版。
● 1972 Dennis Ritchie发明C语言。
● 1973 Unix引入管道的概念,Unix被用C语言重新改写。
● 1974 《Unix分时系统》在ACM的杂志上发表,Unix开始受到广泛关注。
● 1978 Bill Joy发布BSD Unix。
● 1983 AT&T发布Unix System V,基于此,IBM推出了AIX,HP推出HP-UX。
● 1987 AT&T和Sun宣布共同开发一个Unix。Andrew Tanenbaum开发出Minix。
● 1988 Unix战争爆发,DEC、HP、IBM等成立Open Software Foundation (OSF),AT&T等成立Unix International。
● 1989 System V Release 4 (SVR4)发布, System V、BSD、SunOS和Xenix得以统一。
● 1991 Sun基于SVR4发布Solaris,Linux Torvalds以Minix 为基础开发出Linux。
● 1993 AT&T把Unix System实验室和Unix的版权出售给Novell,不久Novell把Unix商标转售给X/Open Group。同年,Microsoft发布Windows NT。
● 1996 X/Open与Open Software Foundation合并为The Open Group。