专栏名称: 程序猿
本微信公众号:imkuqin,为程序员提供最新最全的编程学习资料的查询。目前已经开通PHP、C/C++函数库、.NET Framework类库、J2SE API查询功能。
目录
相关文章推荐
51好读  ›  专栏  ›  程序猿

40多岁的Unix还能走多远?

程序猿  · 公众号  · 程序员  · 2016-11-23 17:40

正文

来自 :计算机世界

乐天 编译

链接:http://tech.sina.com.cn/b/2009-06-18/17313192126.shtml (点击尾部阅读原文前往)


Unix问世已经40个多年头。在这40多年中,Unix曾有一段令人骄傲的历史,而近几年,随着Linux和Windows Server的兴起,Unix遇到了前所未有的挑战。Unix能应对Linux和Windows Server的挑战吗?它还能走多远?


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系统,相互之间的争论才逐渐平息下来。







请到「今天看啥」查看全文