这篇文章是在找关于将栈应用于函数调用的首创者的时候找到的,感觉写得很好,于是转载过来与大家共享。不过最后栈的应用的首创者还没有找到,似乎是ALGO60的创始者?反正是和ALGO60有关。
因为转载文章是不能放在首页精华的,所以就不放了。(好像有些废话的意思~)
这篇文章的首发应该是在天涯,地址为
http://www.tianya.cn/new/publicforum/content.asp?idarticle=52231&stritem=itinfo
但是我一直不能访问其第二页,告诉我“贴子被删除”,还好还有几份同步发布的地方。
这个大概是作者的博客:
http://blog.sina.com.cn/s/blog_59e64c8e0100cmri.html
还有一份园子中兄弟的转载:
http://www.cnblogs.com/yizhu2000/archive/2007/09/06/884903.html
内容一致,一直讲到sun的开源,不过还没有讲到windows。
不过实在是很服气新浪的博客留言系统了,我试了快十遍留言,都给我报“对不起,您短时间发表的评论过多,请多休息会,注意身体!感谢您对新浪博客的支持和关注!”,晕倒,暂时就没法留了。先记在这里。
OK,开始正文部分吧。
最近在看Eric.Raymond写的一本《Unix编程艺术》,里面讲了不少计算机的、特别是Unix的历史渊源,出于个人爱好,我对电脑的发展史一向比较关心,也看过一点相关的书本、资料,于是就当是作笔记也好,写学习总结也好,把我所知道的关于计算机操作系统的历史拉拉杂杂地写下了一点文字(如果有人喜欢看,以后也会写些其他方面的),想到坛子里也许还有同好,就贴了上来,欢迎交流,欢迎拍砖(如能有根有据地拍,那就更求之不得:)。
闲话少说,开练。
关于操作系统的定义,我没有找到一个权威的解释,基本上可以说,它是一个程序,一个介于计算机硬件和计算机用户/开发者之间的程序,用户通过它来操作计算机,开发者用它提供的接口来编写程序。操作系统大概可算是最重要(也可算是最复杂)的程序,基本上,它决定了我们能用电脑干什么和怎样用电脑,软件当然是千变万化,不断发展,但无论是在那一种操作系统下跑的软件,必然受限于操作系统所提供的功能,换句话说,它只能在操作系统划下的圈子里翻筋斗。
第一代计算机是电子管(vacuum tube)计算机(大约1945~1959)是没有操作系统的,比如1945年问世的第一台电脑ENIAC,那玩意每秒只能做5000次加减法,连现在地摊上最廉价的计算器都不如,你给它写个操作系统,它也跑不动啊。所以那时操作电脑都是赤祼祼地跟主机打交道,要它干活,得一步步地按开关来告诉它(键盘是没有的,因为用的是机器语言,开关就够用了,后来出现了汇编语言,才出现打孔带这种输入方式),至于输出,它是靠两排小灯泡的闪烁来实现(跟眨眼睛差不多,闭着就是0,开着就是1,所以按照信息技术的理论,眉目岂止能传情,任何信息都可以通过眨眼睛来表达:)。蓝色巨人——IBM(国际商用机器公司)从这时就开始涉足计算机,在这个时代,他们推出的产品是700系列。
第二代的计算机是晶体管(transistor)计算机(大约1959~1964),这个时代的计算机都是所谓的大型机,代表产品是IBM的1403机,运算能力比第一代快多了,达到了每秒几十~几百万次,这个数字看起来还不错,操作系统够简单的话,是可以跑得动的,操作系统也就是在这时候出现的(也有一种说法,说是在五十年代中期就出现了简单的操作系统,但没看到进一步的介绍,)。那时的大型机基本上是一种型号配一种操作系统,通用?没门。这时候的计算机工程师通常也是横跨硬、软件领域,非常的牛X,比如著名的CRAY巨型机,就是由Seymour Cray一手包办软硬件设计,让很多计算机FANS惊为天人,后来,苹果电脑横空出出世,Steven Wozniak也曾再现这种辉煌,这种包办一款电脑软硬件设计的壮举,搁现在,相信没人 可以办到了。在文明发韧之初,类似情形比较常见,古希腊的那些大牛,亚力士多德什么的,都是学贯文理,很多领域都插上一杠子,往往还成了创始人,到了牛顿,虽然差点,文科基本没沾边(神学据说他钻研颇深,但成就如何不得而知),但在理科的好几个领域也是开宗立派、威风八面,现在的科学家大概只有高山仰止的份了。但学术的传承有好几千年,牛顿到现在也有三四百年了,而计算机的历史到今天满打满算也不过六十一年,居然就到了这份上,可见其发展之快。
那时的操作系统跟我们现在所看到的其实大相径庭,当时只是把它称作Batch System,它的功能也非常单一,仅仅是把一些常用的操作指令进行了封装以供程序调用,甚至都谈不上用户界面。
但就在这个时代,有一个特别值得一提的操作系统已经开始酝酿,就是大名鼎鼎的OS/360。
这款操作系统出自蓝色巨人——IBM(国际商用机器公司)之手,IBM在电脑史上的地位堪称泰山北斗,甚至有专家说过,“电脑的历史就是IBM的历史”。而“360系统”堪称IBM历史上最重要的项目之一。
在61年年底,IBM开始打算实施“360系统电子计算机计划”,据当时的估算,整个计划投资约需50亿美元(这可是在60年代初,十几年前的“曼哈顿工程”才花了20亿),这是不折不扣的大手笔,要知道,当时IBM的年营业额还不到这个数字。
之所以如此花钱,是因为这项计划要做一些以前没人做过的事,这将是一个通用的系统( 360 就是 360 度的意思,表示该系统全面的应用范围),该系列不同型号的计算机将能享用同样的设备,如磁带机、打印机等,能使用同样的软件,并且可以相互连接,一起工作,这些在今天看来理所当然的事,在当时可是闻所未闻。该项目在硬件设计上很有创新,乃至 IBM 不得不自己动手设计制造芯片(因为买不到),但更大的困难却是在软件方面,要让所有的软件适用于所有的电脑(当然,仅限于 360 系列),这个理念让 IBM 的软件工程师们伤透脑筋,投入到这个项目中的软件工程师超过 2000 人( Windows2000 也只动用了 1700 名),花费超过 5 亿美元,竟然超过了硬件研发的费用,所有这些都是创纪录的。
负责这项艰苦卓绝的开发任务的,是 Frederick Brooks ,当时年仅三十,他是世界上第一批获得计算机科学博士学位的人之一,有趣的是,当开发这个新型操作系统的计划提出时, Brooks 本是最强硬的反对派,因为他觉得这个项目的难度骇人听闻,实在是不切实际。但当 IBM 的管理层拍下板来,要 Brooks 担当重任时,他居然慨然应允,高风亮节,实在是令人佩服。
360操作系统的开发用了5000个人年(人年就是一个人一年的工作量),由于从未有过开发这种大型软件的经验,开发组陷入了“有史以来最可怕的软件开发泥潭”,最终也没能实现当初的设想。Brooks后来根据这次开发任务的经验,写了一本《人月神话》(The Mythical Man-Month),成为软件工程领域内的经典著作(某种程度上是宣扬的一种失败论)。他本人更在99年获得了计算机领域的最高奖——“图灵奖”。
尽管软件开发工作未获全胜,但 360 项目还是取得了辉煌的成功, IBM 在籍此在计算机行业几乎是一统天下, IBM/360 更被誉为人类从原子能时代进入信息时代标志。此后 IBM 开发的大型机系列都保持了与 360 系统的兼容,直到最新的 z 系列,在 360 上写的程序仍可以不经修改的运行,“兼容”这一概念从此开始深入人心。需要交待一下, 360 计划虽然是在 61 年开始启动,但等到完成己是 1964 年,它的主要部件采用了集成电路( Intergrated Circuit,IC ),属于第三代计算机,它也是第三代计算机的标志产品,还有前面提到的 CRAY 巨型机,也属于第三代。 Cray 此人厉害无比,不可一世的 IBM 几次栽在他手上,在 IBM 研制 360 时, Cray 还在 CDC (控制数据公司,好象那时的计算机公司起名都很低调,象 IBM 、 DEC 都是平铺直叙,不象现在的 IT 公司,名字一个比一个花哨)工作,他带领的团队只花了 700 万美元就搞出了一台比 IBM 的产品快上 3 倍的东东,让 IBM 震惊不己,而他的诀窍就在于开创性地使用了并行技术(就是用多个处理器并行工作),这项技术到现在还是制造超级计算机的基础。
Cray后来离开CDC自立门户,于1972年开了家用自己名字命名的公司(这好象是西方的传统,象HP、DELL都是这么来的,Microsoft也差点就叫Alan-Gates),专搞巨型机,并练就了一门叫做“向量处理”的绝技,独步天下,在80年代,他的产品一度占到世界巨型机总数的70%(“侏罗纪公园”里的恐龙DNA就是用CRAY机来处理的,呵呵),让IBM丢尽脸面。不过CRAY公司其亡也忽焉,后来渐渐没落,公司几次易手,先后被SGI和TERA收购,巨型机老大的位子不久就被IBM夺回去了。
说了半天,也没提操作系统,有点跑题了,呵呵。其实是因为关于 CRAY 机的操作系统,我也一抹黑:(,只是听说它的操作系统都是由 Cray 博士用机器码(就是 0101001...... )写出来的,居然没出现什么 BUG ,我真是无语了~~CDC 和 CRAY 并非唯一斩 IBM 于马下的公司,在小型机领域, IBM 也是一败涂地,胜利者叫做 DEC (数据设备公司,成立于 1957 年,明明是家计算机公司,招牌上却不带计算机字样,之所以如此,是因为当时 IBM 在计算机领域只手遮天,不敢撄其锋芒也),创始人 Ken.Olsen ,是计算机历史上一个颇有悲剧色彩的人物,他能力非凡, 白手起家创建了长期排名世界第二的计算机公司,在 1986 年被《财富》杂志评选为“全美历史上最成功的企业家”,但最终却因经营不善,被他自己一手创建的公司扫地出门( Steve.Jobs 倒也有此经历,不过他卷土重来了),更因为对 PC 的错误估计( 1977 年曾说“我们没有理由认为人们会需要家用电脑”)被人们引为笑柄(其实犯这种错误的名人多了,不一一列举)。
为了不引起IBM注意,DEC推出的第一台机器都不敢叫计算机,而是取了个暧昧的名字叫做“程序数据处理机”(PDP,呵呵,了解电脑发展史的人肯定如雷贯耳)。PDP-1于1959年推出,全晶体管构造,在当时还是电子管计算机当道的年月,可说是相当先进。相比当时的那些大块头,这台只有冰箱大的机器显得相当小巧,这台设计精良的机器让DEC发展迅速,仅仅几年功夫,DEC就从借来的七万美元起家发展到年销售额几百万美元,在六十年代初,这可是个很可观的数字。
DEC 坚持走小型机的道路让一些本来只能望着昂贵的计算机兴叹的单位终于可以买上一台,它独创的分时技术也为更多的人使用计算机创造了机会,在众多的受益者当中,有一个叫 Ken Thompson ,在操作系统的历史上值得大书特书。Unix 可能是世界上最有影响的操作系统,它的第一版是由 Ken Thompson 在一台 PDP-7 上完成的。
Thompson当时供职于AT&T的Bell Labs(贝尔实验室,一个资格极老、极牛的科研机构,晶体管就是在这里发明的,96年AT&T被拆分后划归朗迅),Bell Labs曾经参与了一个叫做Multics(Multiplexed Information and Computing System)的研究联盟,该项目旨在建立一个多功能的“信息应用工具”,以支持多用户对大型机的交互式分时操作,但跟IBM的360计划一样,这个志向高远的项目不幸以失败告终,尽管也得到了几个不太成功的系统。Thompson参与了这个开发项目,散摊子的时候,他收获了一些灵感,还有一个自己编写的游戏(不务正业啊~~这个叫做《星际旅行》的游戏只比公认的史上第一款游戏《太空争霸战》(1962)晚了几年而已)。
Thompson首先是在GE(通用电器,没错,他们那时也造计算机)的大型机上玩,糟糕的是,在这台机器上,源自Multics项目的操作系统运行的很不尽人意,玩起游戏来,响应忽快忽慢,让Thompson很是不爽(我们当然能够理解,想想你正在魔兽中杀的过瘾,机子忽然停下来狂读硬盘是何等扫兴),于是他以开发一个新的交互式操作系统的名义,向领导要求配备一台DEC-10——另外还有一个原因,据Thompson的死党Dennis Ritchie(也是个大牛人,C语言的发明者,Unix的合作发明者)透露,在Ge上玩一次游戏的费用高达75美元(当时的机时可是很贵的),想来如此挥霍公款,Thompson心下也有点惴惴,要台机子自己瞎掰,就安全的多——但刚在Multics项目上遭遇失败的领导们断然拒绝了他的无理要求(呵呵,可怜的Thompson),最后,Thompson只搞到了一台已经废弃的PDP-7。
PDP-8 是 DEC 的第一台采用集成电路的计算机(第三代),也就是说 PDP-7 还是一台晶体管计算机,这就好比,你向领导打报告要配一台酷睿 2 ,最后却只能在仓库里翻一台 286 出来用, Thompson 的沮丧可想而知。 PDP-7 的配置如何,我没查到资料,但 PDP-11 也只有 512KB 的磁盘, PDP-7 想来更少得多,内存应该只几十K(别吃惊,这个数字我估计得很乐观了,几十K内存也是可以做不少事的, Gates 同学写的第一个 BASIC 解释器可是在一台 4K 内存的 Altair 上跑),显示器当然是别想,一台电传打字机把输入输出都包了(什么?没显示器怎么玩游戏?谁告诉你是游戏一定是视频的?)。后来, Thompson 在忆苦思甜的时候告诉 Raymond ,我那时用的机子那个惨啊,内存磁盘加一块还赶不上现在一个最便宜的手机~~要在这么烂的的机器上玩游戏,当然得下一番功夫,原有的系统肯定是不能支持了,得重头干,没说的,为了游戏。经过 Multics 项目的煅炼, Thompson 对于写操作系统已很在行,反正机器烂,不可能搞什么复杂的名堂,什么项目计划书呀,都免了,就跟 Ritchie 两人合计合计,他一个人花了两天时间就搞出来一个原型,厉害吧? WindowsNT 的主设计师(也是 VMS 的设计师) David Cutler 曾有一句名言——“ Who can't write an OS in a week? ”,固然牛气哄哄,比起 Thompson 似乎还颇有不如,呵呵。
那是 1969 年, Thompson 搞出来的这个东西就是 Unix 的雏形,尽管把它称作 Unix 还有点勉强,但已经显示出 Unix 的一些基本特征——简洁、高效、比当时所有的操作系统都更注重交互性、对程序员友好(它就是程序员写出来给自己用的,是当时唯一允许程序员边写代码边测试的系统),也许,还有那么一点散漫,而且,即使如此恶劣的硬件条件下,它仍然具备一个简陋的文件系统,有特殊的文件类型以支持目录和设备,甚至,可以支持多任务(想想晚它十几年问世的 DOS 还只能支持单任务,就知道 Thompson 有多牛了,当然, DOS 可以用变通的方式支持多任务,但毕竟不是原生的)。当然, 还有很多 Unix 的特性它还不具备,比如,它的核心是用汇编写的(汇编器也是 Thompson 自己写的),当然不具备可移植性,并且,只支持两个用户(想来就是 Thompson 和 Ritchie ,呵呵)。
有一点值得一提,这个系统除了用汇编以外,还用到了另外一种语言,就是解释型的 B 语言(也是 Thompson 自己发明的,这家伙真是自力更生模范的说 ~~ ),主要用来写应用程序。 B 语言是 Thompson 在一种叫作 BCPL(Basic Combined Programming Language ,由剑桥大学的 Matin Richards 在 CPL 语言的基础上简化而来, CPL 是在 ALGOL 60 语言上发展而来,至于 ALGOL 60 可就牛了,它被称作是“计算机科学诞生的标志”,这些语言通通源自剑桥 ) 的语言的基础上简化改进而来(之所以叫 B 语言,就是把 BCPL 精简提炼的意思),它非常简单(不支持数据类型和结构,放在今天真难以想像),并且极亲近硬件,可以把它看作是一种稍微高级了一点的汇编语言。后来, Ritchie 给 B 语言加上了数据类型和结构的支持,推出了一代王者—— C 语言(意思是“ BCPL ”中排在 B 之后,在 TIOBE 语言排行榜上至今在一、二名徘徊),并将 Unix 用 C 语言重写,那就是后话了。
经过一番鼓捣, Thompson 的游戏终于可以在 PDP-7 上跑起来了,但这台机子毕竟太烂,而且还是借来的, Thompson 他们一直期待着能搞台更好的机器用,在 1970 年,这个机会来了, Bell Labs 的专利部门需要一套“文字处理系统”(他们的专利可是很多的),当时可没有现成的 Word , Thompson 就把这活接下来了, 并名正言顺地买了一台 PDP-11/20 (比当初申请的 DEC-10 还是便宜多了)。
他们首先把 Unix 从 PDP-7 上移植了过来,汇编写的代码没什么可移植性,所以基本上就是在 PDP-11 上重写了一次,这种没多大创造性的工作想来做起来并不怎么愉快,给后来 Thompson 下定决心,用高级语言( C 语言)来写操作系统增加了动力( MULTICS 可能是最早用高级语言写操作系统的尝试,当时用的是 PL/I ,以失败告终,那时的普遍观念,操作系统是不宜用高级语言来写的)。
在 PDP-7 上,他们曾经写过一个叫做 roff 的文本格式化程序,再配上一个编辑器,一个“文字处理系统”基本上就齐活了,于是 Bell Labs 的专利局成了 Unix 的第一个商业用户,这是在 1971 年 11 月,在与系统配套的手册中,该版本被称做“ First Edition ”,有些史料就把这一年作为 Unix 的诞生之日。
顺便说一下, Unix 这个名字是 Thompson 在 Bell Labs 的同事 Brian Kernighan 取的,在 1970 年, Kernighan 开玩笑地把 Thompson 在 PDP-7 上的那个简陋系统称为“ UNICS ”,意思是“ UNiplexed Informationand Computinig System ”,这是相对于 MULTICS 来的, MULTICS 是“ Multiplexed Information and Computing System ”的意思,后来, UNICS 变成了 Unix 并且流传开来(这种简化应该是出自一种黑客趣味)。
1972 年 Unix 发布了第二版,最大的改进是添加了后来成为 Unix 标志特征之一的管道功能,所谓管道,就是程序之间交流数据的通道。这一设计,对鼓励简洁、小巧、灵活,而又注重通用和协作的 Unix 程序设计风格意义重大,与此相关的,还有过滤器这一设计, Unix 下的程序大多小而精,但相互之间的协作性极好,与 WINDOWS 下推崇大而全的程序设计风格大异其趣,这是在系统设计之初就埋下了种子的。这一年, Unix 的装机数达到 10 台,都是 Bell Labs 内部的机器。
在写第二版的时候,Thompson和Ritchie曾经试图用B语言来重写核心,但因为B语言功能太弱,最后放弃了。Ritchie因些萌生了搞一个新语言的想法,它必须强大到可以写系统级软件。于是,在对B语言进行了卓越的改进之后,一个传奇——C语言诞生了,这是在1973年,此后,这一语言包揽了绝大多数的系统级开发,在前两年泄露出来的WINODWS2000的多达几百M的源代码中,大家看到,除了极少的汇编和C++,绝大部分代码都是C语言写就,在记者问到Ritchie为什么C语言会如此受欢迎时,Ritchie很低调的回答,可能是C语言的抽象程度既能满足需要,又比较容易掌控。跟Unix一样,C语言确实是一种简洁而优美的语言,“审美”是这种殿堂级软件设计思想的核心,爱因斯坦曾经说过,描述基本物理理论的数学方程中必须有美,与软件设计倒是不谋而合(但世事难料,比如Windows,或者Perl,这些许多人认为比较臃肿、丑陋的设计也都活得有滋有味,当然,能挺多久难说)。顺便说一下,虽然C语言如此威猛,但身为C语言之父的Ritchie最爱的语言却并不是它,而是一种我听都没听说过的Alef。
有了C语言这柄利剑,Thompson和Ritchie很快就重写了Unix,在MULTICS项目失败以后,用高级语言写操作系统的梦想终于实现了,好多年后,Ritchie骄傲的写到,很肯定,Unix的成功很大程度上源自其以高级语言作为表述方式所带来的可读性、可改性和可移植性。看着这个基本上达到了预想的作品,Thompson和Ritchie不免有些沾沾自喜,觉得可以拿出去“炫”一把了,于是在1974年,他们在《美国计算机通信》(Communications of the ACM)上发表了一篇文章,第一次对外面的世界展示了Unix的存在。
且说这个新版的 Unix 搞出来以后, Bell Labs 里的很多科学家都挺感兴趣,经常跑到那台 PDP-11 上去鼓捣一番,但很快他们就发现,自己设置的帐户 Thompson 总能轻易地闯进去, Bell Labs 里的人物岂是泛泛之辈,怎甘受此羞辱,于是就有人把源码翻了出来,经过一番分析,去掉了后门,然后重新编译,于是,整个世界清静了——且慢,正在他们沾沾自喜的时候,却发现,帐户又被 Thompson 破解了,这下大家彻底郁闷了,这一郁闷就是好多年, Thompson 的洋洋自得就别提了。直到 14 年后, Thompson 才突然良心发现,道出了个中巧妙,原来代码中的后门是有的,不光是系统本身,还藏了一个在 C 编译器中,系统本身的后门虽然被清除了,可还是用有后门的编译器来编译的啊!哈哈。而Ritchie就厚道多了,他只是很热心地向大家推介他的C语言,并鼓励大家使用C语言中的函数调用——这真是一种先进的设计方法,何况还有Ritchie信誓旦旦地保证——C语言中的函数调用的机器开销真的很小很小,于是,人人都开始写函数,搞模块化,等到大家终于搞清楚,在PDP-11上,函数调用的机器开销竟达到50%时,已经是积习难改、欲罢不能了,至于Ritchie,当然是躲到一边偷笑去了(话说回来,这种设计思想毕竟是正确而先进的,只是在当时落后的硬件条件下,显得有些奢侈,呵呵)。
Thompson 和 Ritchie 在 Communications of the ACM 上的文章发表后,引起了许多大学和实验室的关注,因为文中着重鼓吹 Unix 的简约设计及在低性能机器上的良好表现,大家(主要是那些用落后机器的穷单位,嘿嘿)都想见识一下。本来这是笔送上门来的生意,但 AT&T 有点特殊情况,因为它由来已久的垄断地位,早在 1958 年就被反托拉斯调查,根据那次调查达成的协议, AT&T 不准进入计算机相关的商业领域( IBM 少了个大对头),也就是说, AT&T 不能拿 Unix 卖钱(交待一下, Unix 虽然是 Thompson 他们自作主张搞出来的,但毕竟是 AT&T 员工的工作成果,因此 AT&T 享有版权),而且依据那次协议, AT&T 有义务将电话(这是本行)以外的技术许可给任何提出要求的人——这条有点匪夷所思,简直是欺负人嘛:)——正是这条协议,给 Unix 的流传大开方便之门。于是,在仅收取工本费之后, Thompson 开始将 Unix 的磁带和磁盘一包包的寄往世界各地(是不是有点史诗味道?:)——据说,每一包里都附了张小纸条,上书“ love , ken ”——真是剑胆琴心的说 ~~~~寄出去的 Unix 是第五版,附有源代码。犹如散落的火种,这些被安装在各处管理松散的廉价计算机上(这点很重要,如果是安装在昂贵的大型机上,就没有那么多机会让人瞎鼓捣了)的操作系统,点燃了许多计算机爱好者的创造热情,他们日以继夜扑在上面,摆弄代码,添加功能,然后彼此交流,相互炫耀。不少大学都开始拿 Unix 作教学之用。
大家在遇到麻烦的时候,可以向 Thompson 他们的小组打电话 , 或者通过原始的 UUCP ( Unix to Unix Copy Program, Bell Labs 开发的一的种在 Unix 机器之间通过电话线和 MODEM 通讯的程序)发送问题,甚至可以跑到 Bell Labs 去与他们当面交流。 Unix 许多重要的改进和发展正是由这群主要来自于各所大学的爱好者们完成的,这些成果被反馈到 Bell Labs 。在 1979 年发布的第 7 版 Unix 中包含了很多由爱好者们贡献的创意乃至代码,这是公认的第一个完整意义上的 Unix 。可惜由于版权问题及商业利益的影响,这种开历史先河的发展模式并没有持续多久,幸好,在好多年以后,在 Internet 的支持下,我们将会看到, Linux ,这一 Unix 的变种,成功地将这一模式予以了辉煌的再现。
最早散布出去的 UNIX 几乎都是装在 DEC 的 PDP 机器上,在 1976 年前后,开始有好事者将其移植到其他种类的机器上,包括 Interdata 系列、 IBM 的 Series1 系列以及 VM/370 。这时, Thompson 和 Ritchie 用 C 语言编写系统的苦心开始得到回报——即使是设计大不相同的异构机器,移植工作也进行的相当顺利(当然,是相对的), Ritchie 甚至宣称,将 UNIX 移植到别的机器上比把一个应用程序移植到另一个操作系统中还要简单。 1978 年, DEC 公司推出新的拳头产品 VAX 后, UNIX 很快就被移植到上面,尽管没有支持 VAX 特有的换页功能(一种内存管理的技术),但仍然很快流行开来,对 DEC 苦心开发的专门用于 VAX 机器的 VMS 构成了重大威胁。
UNIX 在初期主要是用于 DEC 的机器,尽管没有正规的技术支持,但仗着灵活、快捷、容易修改和扩充以及资源丰富(包括支持的硬件设备更丰富, DEC 的操作系统只支持自己的系列产品)的强大优势,很快就严重影响到 DEC 自身的软件推广。碰上这样的飞来横祸, DEC 当然是非常恼火,他们对使用 UNIX 而带来的硬件问题拒不提供支持,但尽管如此也不能阻挡大家对 UNX 的热情。而 VAX/VMS 乃是 DEC 寄予厚望的战略级产品,技术那是相当的优秀,居然甫一推出,就又遭到 UNIX 的追杀,也难怪老板 Olsen 会口出恶言,讥讽 UNIX 是“蛇油”(意为“骗人的万用药”)了。 DEC 苦撑了几年之后,终于不支,改变态度,于 1982 年推出了自己的 UNIX 变种—— DEC ULTRIX ,但在推广策略上,仍是以自家的 VMS 为主导。 DEC 公司的保守作风终于酿成大祸,在别的公司推出专门针对 UNIX 设计的机器后, DEC 的江湖地位每旷愈下,在 PC 问世后,更是一蹶不振,后来连年亏损, 1992 年把 Olsen 赶下台也没解决问题,终于在 1998 年,这个曾经的传奇——一度排名世界第二的计算机公司被后起之秀 COMPAQ 并购,不过 96 亿美元的天价也算是对它价值的承认。 COMPAQ 后来被 HP 以 260 亿美元收购, HP 后来被…… HP 这么大的块头,估计一时半会也没人吞得下它,呵呵。
DEC的机器曾是UNIX诞生的温床,但DEC的没落UNIX却起到了相当重要的推波助澜的作用,如果DEC当时采取拥抱UNIX的策略,也许计算机产业又是另一番格局了。当然,世事难料,这种推测也只是扯淡罢了。