闲话操作系统(六)
西摩•克雷(Seymour Cray)――隐居丛林的超级计算机之父
如果将计算机喻为科学皇冠,那么超级计算机无疑是皇冠上最耀眼的明珠。一个国家超级计算机的研制水平,是国际上用来衡量其科技水平最重要的标志之一。超级计算机一直以来应用于工业,科研,国防中最尖端的一些领域。在所有超级计算机的研制者中,西摩·克雷(Seymour Cray)被誉为是无可非议的“超级计算机之父”。
1925年克雷出身于美国的一个工程师家庭,他从小就喜爱电子学,中学期间更是长时间泡在电气实验室,对于摆弄各种电气设备、收音机、电动机以及各种电路乐此不疲,他长期沉迷其中,以至于极少参加各种社会活动。小时候的这些经历似乎已经预示了他将来一定会走出一条出色的技术专家道路。
中学毕业后,18岁的克雷加入部队,服役期间正值二战末期,他随着部队走南闯北,到过世界上不少的战区。二战结束后,克雷回到美国,开始在威斯康星大学上学,不久,又转到明尼苏达大学,1951年取得了该大学的电气工程学士学位,由于感到一些课程太缺乏数学内容,其后克雷又花了一年时间学习数学,1952年他拿到了数学硕士学位。就像很多人一样,拿到学位后,到底应该何去何从呢?克雷开始迷茫了。这时克雷的老师给了他一个建议说,如果我是你,我会沿着这条路走下去,一直走进工程研究协会(ERA)。克雷听从了老师的建议,从此也奠定了其一生事业的发展方向。
随后克雷加入了ERA,负责建造密码设置。当时的克雷对还对计算机一无所知,为了完成目标,他一头扎进图书馆,开始吸收各种计算机的知识。不久后,他设计出他的第一台计算机EAR 1103。但是没过多久,ERA被收购,克雷发现这家新公司与他自己的目标――研制第一流的超级计算机相差太远,最后克雷选择了离开。
1957年,克雷和其它几位ERA的同事辞职后,创办了CDC。在克雷刚开始CDC 1604的设计时,电子工业中最重要的创新――晶体管问世了,也正是因为晶体管刚刚出现,价格很高。面对资金短缺的问题,克雷不得不在CDC 1604的建造中使用了不少的废弃的二手晶体管。尽管如此,CDC 1604还是成为了当时最好的计算机,也是独一无二的晶体管超级计算机,不能不说,这完全是克雷一次伟大的成功。随着CDC 1604的商业成功,克雷的声望与日俱增,然而对克雷而言,这也许并不是一件好事,过多的行政事务与社会活动使他不能专心于他的目标。于是克雷和公司达成协议,在他老家威斯康星的丛林中建立一个实验室,在此后的整整4年中,克雷谢绝一切社交往来,潜心于超级计算机的研究,为此别人送他一个“丛林隐士”的外号。他的隐居没有白费,1963年CDC 6600的推出,使得CDC公司成为了市场上真正的主导者,再到后来CDC 7600的推后,这台每秒运行1000万次的机器被公认是当时第一台真正意义上的超级计算机,克雷也成了举世闻名的超级计算机专家,CDC公司从此开始独霸整个超级计算机市场。
闲话操作系统(七)
CDC在当时实在是太成功了,这也导致了其将目光转移到了计算机的商业应用,不再重视超级计算机的研制。这使得坚持自己信念的克雷第二次的选择了离开。1972年,克雷自立门户,创立了克雷研究公司,公司的宗旨是只生产超级计算机。此后的十余年中,克雷先后创造了CRAY-1,CRAY-2等机型,他亲手设计了Cray机型的全部硬件与操作系统,其中的作业系统更是他用机器码编写完成。在CRAY-1,他第一次采用了集成电路来制造,速度达到了每秒钟2.4亿次,是当时市场上其它机型的40多倍速,而价格却相差无几,这使得CRAY-1取得了空前的成功,其后推出的CRAY-2更是比CRAY-1功能强大了4~6倍,运行速度达到了每秒12亿次的浮点运算,很多以前需要几年运算才能完成的工作在CRAY-2上只需要1秒钟。到了1984年时,克雷公司占据了超级计算机市场70%的份额。
但好景不长,到了20世纪80年代后期,PC的发展如日中天,大型机和超级计算机都受到了较大的冲击,最终CRAY-3在商业市场上惨淡收场。此时的克雷再一次与公司的意见出现分歧,1989年他退出了自己一手创办的克雷研究公司,另行成立了克雷计算机公司,全力研究CRAY-4,但是这个设计目标为每秒1000亿次的机型最终没有完成,1995年克雷计算机公司被迫宣布破产。
面对事业的几次大起大落,克雷一直没有放弃过,到1996年,70余岁的克雷再一次创办了SRC公司,希望再一次能为世界创造出奇迹,可惜天不作美,厄运突然降临,1996年9月,一场意外的交通事故让克雷永远的停止了呼吸,享年71岁。
VAX是一种32位的小型机,因为它惊人的寻址能力(达4GB,尽管由于成本关系,大多数VAX机器也只配备了1M内存),DEC为它设计了革命性的换页技术,的确让Unix有点赶不上趟,但这项让DEC引以为傲的技术优势并没有保持多久,仅仅一年之后,一个叫做Bill Joy的来自Berkeley(加州大学伯克利分校,University of California at Berkeley)的学生就在Unix上实现了这一技术。
Berkeley是一所很牛的大学,做为一所州立大学,它在很多领域都能和那些财大气粗的私立学校相抗衡,它不仅拥有数以十计的诺奖得主,而且还是许多社会潮流的源头,比如嬉皮文化、反越战运动等。在九十年代末的一次美国大学评比中,它的不少专业都名列前茅,比如文学、新闻等,当然,更值得说的是,它的电脑和电子工程技术专业名列全美第一,甚至把更鼎鼎大名的MIT、Stanford都甩到了后面。Berkeley与Bell Labs似乎关系不错,早在Thompson发表那篇宣言般的论文之前,就搞了一份Unix来用,还专门为此买了一台PDP-11/45,比较丢人的是,他们鼓捣了几天也没把Unix装上去,最后还得劳动Thompson亲自出马,呵呵。其实原因是出在Unix自身,因为他们买的那台PDP太高级,竟然配备了双硬盘,Unix那时还不支持。
其实早在此之前,Joy就已经致力于Unix的研发。在1997年年初,Joy就编写并发布了一个以BSD(Berkeley Software Distribution)命名的Unix版本(有个传说,说最初Joy用三天时间就写成了一个简陋但可用的Unix,忍不住怀疑搞操作系统的都是一伙超人~~~~:),BSD后来影响如此之大,足可与AT&T的原版相提并论。在第一版的BSD中,Joy就搞出了些新意思,他写了Unix中的第一个Pascal编译器(Pascal由瑞士的Niklaus Wirth教授于1970年发明,是一种影响深远的语言,许多现代语言,例如Java都受过它的影响,尤其以应用于教学著称,当然也应用于许多实际的项目,著名的如Delphi,它甚至被用来写操作系统,Apple早期的MAC系统就是用他们自己的特殊版本的Pascal写的),以及Unix中的第一个全屏编辑器VI(到现在仍是Unix中最常用的程序之一,虽然编辑器出了无以数计,但能与VI相提并论的,大概也只有Emacs了,这又关涉到另一个大牛人,先按下不表:),另外,他还写了一个重要的C语言函
闲话操作系统(八)
一讲到OS,就要贬低一下Windows,显得自已多有水平似的,靠,你是谁,你到底懂多少,你写过多少行代码?!有没有经过大脑想一想,Windows难道不是优秀的OS吗?象OS这么复杂、牵涉又这么广的软件,是不可能讨好所有人的,UNIX/LINUX也一样有很多人不喜欢,比如网上就有一篇流传很广的《Unix痛恨者手册》~~~~我的态度只是叙述。
WINDOWS的来历与UNIX相差太大,不好放在同一水平线上比较。它是作为一个纯粹的商业项目来运作,为了保证商业上的竞争优势,在技术上作了很多妥协,臃肿丑陋云云也不是我说的,很多微软的工程师都对WINDOWS表示过不满,实际上,9X的核心微软自己也放弃了,那个微软花了不少力气修修补补的WINDOWS ME可能是操作系统历史上最短命的一款产品。
NT核心当然要强得多,它继承了不少VMS、OS2乃至UNIX的技术元素,与9X不可同日而语,在衡量操作系统的几个重要指标上,如安全等级、运行时间等也可以与UNIX家族相提并论,为了保证兼容性,臃肿恐怕还是有一点,丑陋与否就见仁见智了。
PERL是一种实用主义的语言,Larry Wall本人也承认它不够优雅,所以那本著名的《PERL编程语言》,他选了一只骆驼作封面,意为丑陋,但实用。 VAX是一种32位的小型机,因为它惊人的寻址能力(达4GB,尽管由于成本关系,大多数VAX机器也只配备了1M内存),DEC为它设计了革命性的换页技术,的确让Unix有点赶不上趟,但这项让DEC引以为傲的优势并没有保持多久,仅仅一年之后,一个叫做Bill Joy的来自Berkeley(加州大学伯克利分校,University of California at Berkeley)的学生就在Unix上实现了这一技术。
Berkeley是一所很牛的大学,做为一所州立大学,它在很多领域都能和那些财大气粗的私立学校相抗衡,它不仅拥有数以十计的诺奖得主,而且还是许多社会潮流的源头,比如嬉皮文化、反越战运动等。在九十年代末的一次美国大学评比中,它的不少专业都名列前茅,比如文学、新闻等,当然,更值得说的是,它的电脑和电子工程技术专业名列全美第一,甚至把更鼎鼎大名的MIT、Stanford都甩到了后面。Berkeley与Bell Labs似乎关系不错,早在Thompson发表那篇宣言般的论文之前,就搞了一份Unix来用,还专门为此买了一台PDP-11/45,比较丢人的是,他们鼓捣了几天也没把Unix装上去,最后还得劳动Thompson亲自出马,呵呵(Thompson后来还曾在Berkeley教过一段时间的操作系统课程)。其实原因是出在Unix自身,因为他们买的那台PDP太高级,竟然配备了双硬盘,Unix那时还不支持。
其实早在此之前,Joy就已经致力于Unix的研发。在1977年年初,Joy就编写并发布了一个以BSD(Berkeley Software Distribution)命名的Unix版本(Joy当时的身份是发行组的秘书,据传说,他用三天时间就写成了一个简陋但可用的Unix,忍不住怀疑搞操作系统的都是一伙超人~~~~:),BSD后来影响如此之大,足可与AT&T的原版相提并论。
在第一版的BSD(1BSD)中,Joy就搞出了些新意思。他重写了一个功能增强的Shell——csh(Shell是UNIX的命令解释器,类似于DOS的Command.com,不过UNIX能支持多个Shell),并编写了Unix中的第一个Pascal解释器(Pascal由瑞士的Niklaus Wirth教授于1970年发明,是一种影响深远的语言,许多现代语言,例如Java都受过它的影响,尤其以应用于教学著称,当然也应用于许多实际的项目,著名的如Delphi,它也曾用来写操作系统,Apple早期的MAC系统就是用他们自己的一种特殊版本的Pascal写的),以及一个叫做ex的编辑器。在第二版中,他又写了一个极出色的全屏编辑器VI(到现在仍是Unix中最常用的程序之一,虽然后来编辑器出了无数,但能与VI相提并论的,大概也只有Emacs了——关涉到另一个大牛人,先按下不表:),以及一个重要的C语言函数库termcap(也流行了好多年)。
闲话操作系统(九)
早期的BSD并不全是Berkeley搞出来的,里面含有大量属于AT&T的代码,以及一些其它大学贡献的代码。这时的AT&T由于不能用UNIX赚钱,所以态度很不明朗,对于教育及科研机构的政策很宽松,只收取象征性的费用,提供源码,并且没什么使用限制(很高明的推广策略,事实证明成效斐然,堪与微软对盗版暧昧的纵容相比),对于企业用户的收费就很高(一份带源码的拷贝要2万美元,装多台机器的话还得另加,比起BSD来这还算便宜,一份源码版的BSD要4万),而且限制多多。但也不能说它把UNIX商品化, AT&T没有自己的UNIX开发计划,而且既不作广告推销,也不提供技术支持、售后服务,对产品品质也不作任何保证(如果出现什么BUG,你也得自己认了~~),至于没有试用期,一手交钱一手交货那就不用提了,跩到这个份上,也实在不象做生意的样子:)。
但Bell Labs内部还是成立了几个小组(类似学校里的兴趣小组,当然也可能怀有商业用心:),承担了一部分UNIX的技术支持工作(非官方),并且进行进一步地开发。Thompson和Ritchie他们的小组就叫“Research”,他们主要搞研发(并不限于UNIX),对技术支持没多大兴趣,挑大梁的是另外两个,一个叫PWB(Programmer's Workbench,他们对UNIX做了不少改进,并且发布了一个自己的版本PWB/UNIX),一个叫USG(UNIXSupport Group)。糟糕的是,这几个小组互相看不顺眼(文无第一,武无第二,这也是没办法的事:),对UNIX的理解也不尽相同,乃至各自散发出去的的版本都不是很兼容,UNIX复杂到让人头大的谱系这时就已开了滥觞。
在这种状况下,UNIX尽管在教育科研领域声誉日隆、炙手可热,但对计算机产业的影响仍然有限,毕竟它还只是一种非标准化、非商业运作的技术,只能拿来用,没法靠它赚钱。后来AT&T的政策松动了一些,在1978年前后,才开始出现商业公司提供UNIX的技术服务。1980年,AT&T发布了UNIX的distribution binary许可证(可分发二进制版),这下别的公司终于可以用UNIX来卖钱了,第一家买下这种许可证的公司是Onyx Systems,值得一提的是,它的产品是微机(比较另类的一种,采用Z80000的CPU),UNIX与微机的渊源可谓由来久矣。
差不多与此同时,有公司开始开发UNIX的克隆版——就是全盘复制UNIX的功能,可以兼容UNIX的程序,但代码完全重写。第一个版本是Whitesmiths公司推出的IDRIS(它雇了几个前AT&T的程序员,还曾经推出第一个商业C语言编译器,),开始为了避免版权纠纷,Whitesmiths有意在库名称及参数顺序等地方作了些小改动,后来AT&T高姿态地宣布不追究这些细节,于是开发与UNIX完全兼容的系统成为可能,很快很多公司(包括几乎所有的业内大腕)就开始蜂涌而上了:)。顺便说一下,上世纪末的时候,有一家澳大利亚公司曾开发出一个兼容Windwos的操作系统,但因为版权关系,没来得及推广就夭折了。(举几个开发过UNIX克隆版本的公司名字,有IBM(名字叫AIX,1986年发布),HP(HP-UX,1982年),SGI(IRIX,1987年),Microsoft(XENIX,1980年),SUN(Solaris,1985年),Apple(MacOS X,2001年)~~~~其中有一些主要源自BSD的版本,如SUN和Apple,但追根究底,仍是来自那个出于Bell Labs的天才发明。Bell Labs的一位高层人物后来曾说,UNIX和晶体管是Bell Labs最重要的两项成就。如此评价,Thompson和Ritchie应该可以得意地笑了:)。
AT&T于1983年发布了System V(简称SVR1,意为System V的第一版,在Bell Labs原版的基础上吸收了一些来自其它版本的技术),此后便一直沿用这一名称。直到1993年AT&T将UNIX卖给Novell之后(连同拥有UNIX产权的子公司USL,Unix System Laboratories),Novell仍使用了一段时间,最后一个System V版本是Novell于1993年12月推出的SVR4.2MP(MP是“多处理器”的意思)。而最先的那个版本(以Version x命名)Bell Labs仍继续发展了一段时间,直至1990年推出的Version 10。但SV系列推出后,这一系列影响就小了,大多数UNIX的变种都是源自SV系列和BSD系列,而SVR4本身就吸收了BSD系列的一些东西(主要是TCP/IP协议栈)。
UNIX技术虽然广受欢迎,但这一商标本身似乎并未创造很大的价值,AT&T大概是因为受条约限制,据说在它身上只赚了几亿美元,而Novell也没能很好地利用它,Novell后来将自己的Netware与SVR4相结合,推出了Unixware,随后就将UNIX的商标权卖给了X/Open Company。到了1995年,干脆把Unixware也卖给了SCO(Santa Cruz Operation,这家公司好象不太厚道,前两年因为Novell转向发展Linux,SCO以不太站得住脚的原因起诉Novell侵权,同时还告了IBM,因为诉讼对Linux非常不利,激起公愤,我记得当时《电脑报》以很少见的激烈言辞在头版予以报道)。
X/Open Company在1996年与OSF (Open Softare Foundation)合并,成立了The Open Group。这个非赢利组织到目前为止拥有着UNIX的商标权,实际上,经过这么一番复杂的变迁,UNIX这一名称似乎已经谈不上有多大的商业价值了,更多的是一种标准和象征。The Open Group负责发布和维护Single Unix Specification(UNIX规范),后来ISO(国际标准化组织)发布的UNIX标准主要就是照这个来的。关于UNIX还有一个重要的标准,就是由IEEE(电气和电子工程师协会)发布的POSIX(Portable Operating Systems Interfaces for Computer Environment,Linux最初就是照着这个葫芦画瓢来实现与UNIX的兼容的:) Uinx版本演变和版权纠份很复杂,众说纷纭,搞得人头大,但不说又显得介绍不完整,尽量简短的写一点吧~~~。
闲话操作系统(十)
关于那种操作系统好之类的争论,我觉得在细节上讨论一下,可能比较有意义,笼统的说谁好谁不好,意义不大,各自的来源、应用范围、目标、乃至指导思想(或者肉麻一点,叫哲学:)都不相同,不好拿来比。就好比宠物吧,你说是狗好还是猫好? 有关AT&T的叙述告一段落,再说两句Thompson和Ritchie,与这两位牛人告别:)。就象顶尖的物理学家只对大问题感兴趣一样(一般是在证明一种理论后就转向研究其它,那些细枝末节的问题就交给那些实验物理学家了),在发明UNIX之后,他们并没有在这上面花费太多功夫,除了做一些本职工作的研究之外(例如IP电话),他们还继续对操作系统进行探索。由于UNIX的核心设计完成的如此之早,Thompson他们虽然天纵英才,却也没能料到计算机的发展如此日新月异,UNIX最初是作为一个基于单机的分时系统来设计的,这显然不符合当今潮流,虽然仗着它高效、稳固以及灵活的可扩充性设计,在今天的网络时代仍挑着大梁,但在新兴应用层出不穷的情形下不时表现出的核心技术的滞后让Thompson他们颇为不爽,于是他们决心搞一个新玩意。
在80年代后期,Thompson和Ritchie开始开发Plan9(1995年推出)。这个看上去与UNIX颇为相似、仍旧以C语言编写的操作系统是全新的,它面向网络和分布式计算,在一定程度上,它提出的概念有点类似上世纪末Oracel和SUN他们提出的NC(NetWork Computer),或者叫“瘦客户端”,核心理念就是把网络里的运算能力集中起来,客户机则用不着太快。在Plan9系统的网络里,有一个“CPU服务器” ,它来处理大多数的运算请求,然后将结果返回到各客户端。这一构想很早就有人提出,所以Thompson他们也好,Oracel他们也好都不算是发明创造,在今天,这种应用也很普遍(比如Google,海量信息的搜索和查询请求的处理就是在服务器端完成的,大多数网络开发技术都是基于服务器端),但在系统级的架构上实现这一理念,Plan9首开先河。而且令人兴奋的是,Plan9顺应了开源软件的大潮,大家可以去Bell Labs或者Vita Nuova(经营Plan9和Inferno的公司)的网站上下载到它附有源码的版本。
后来,Thompson和Ritchie还主持编写了一个叫做Inferno的系统(1996年推出),这个系统基于一种叫做Limbo的语言(这个主要是Sean Dorward设计的,Thompson曾特意声明,大家别搞错了,呵呵:),在概念上与JAVA比较类似,它有一个通过Limbo语言接口的交互层,即可以做为一个单独的操作系统安装,也可以作为一个应用程序在别的操作系统中运行——就象JAVA虚拟机(SUN也曾做过纯JAVA的操作系统,不过好象效率低下,没能推广开),Inferno比JAVA推出的略晚一些,但考虑到研发的时间因素,分不清谁先谁后,不过Thompson说Limbo要比JAVA清爽,当然这只是一面之辞:)。
除了计算机之外,Thompson和Ritchie的爱好就不大相同了。Ritchie喜欢古典音乐,但并不发烧,通常只在收音机里听听,Thompson喜欢流行音乐,而且非常发烧,他收集了几万首上过排行榜的流行歌曲——以一种Bell Labs发明的叫做PAC的压缩格式,音质远超MP3,而且他透露大多是“非法”取得的(相信不少同志有过类似行为:)。Ritchie喜欢旅行,规规矩矩的那种,比较出格的也就是开开大卡车,Thompson就比较猛,他喜欢开飞机,而且水平不错,在前苏联时代,曾经开着飞机过去跟他们的米格-29比试了一番。现在Thompson己经退休,当上了飞机教练,Ritchie则还在Bell Labs工作,当上了领导,负责系统软件研发部门,主要工作不再是写代码,改成了开支票(按咱们时下的流行理论,这也算是程序员修成了正果,呵呵)。Ritchie曾经与Brian W.Kernighan合写了《The C Programming Language》,是计算机科学的经典名著(单就发行量似乎不如谭浩强那本,但影响不可同日而语),世界上最著名的程序——“Hello,World.”就是在这本书里首次亮相:)。Ritchie低调而自负,自称没有偶像,唯独对Thompson赞赏有加,他拒不承认对UNIX的贡献与Thompson一样多,并声称Thompson的编程水平自己望尘莫及。而Thompson似乎是个乐天派,他自称做过的几乎所有事情都是出于个人爱好——我真希望自己也能说出同样的话来。
1983年,Thompson和Ritchie荣获图灵奖,首开以软件工程师而不是计算机科学家的身份获奖的先例,并促使图灵奖开设了一个新奖项——软件系统奖;199年,他们俩又获得了“全美技术勋章”,作为程序员,他们获得的荣誉可算是登峰造极了。但Thompson对当今计算机业的看法却不太令人鼓舞,他说计算机业已经进入了中世纪,不再那么令人兴奋,他建议自己的儿子选择生物工程,而不是计算机,顺便说一句,Thompson曾经细读过Linux的源码,对这个新一代的传奇评价不高,进而对整个计算机业的技术发展似乎都比较失望。比起二、三十年前,现如今的IT业的确商业味更浓,而革命性的创新鲜见,如果真如Thompson所言,如今是处于计算机业的“中世纪”的话,真希望能早点等到“文艺复兴”的到来:)。
转过头再来说BSD。
当时搞UNIX研发的并非只有Berkeley一家,只因Berkeley出了Bill Joy这么个大牛人,一下子把别人都压下去了,到第三版(就是可以完美支持VAX机的那一版)推出后,风头之健,更是盖过了Bell Labs,成为UNIX技术发展的中心,因为这样的优势地位,不久之后,一个巨大的机遇找上门来。
1979年,DARPA(Defens Advanced Research Projects Agency,美国国防部高级研究计划局)开始着手一项计划,全面更新他们的ARPAnet(一个用于连接他们散落在美国各地研究中心的计算机的网络,Internet的前身)。早期运行ARPAnet的都是些PDP-10,现在已是风烛残年,该退休了,DARPA准备换上新型的VAX机来接班,加上前两年开发的TCP/IP协议(Transimission Control Protocol/Internet protocol)也得借这次机会登台亮相,这将是一次脱胎换骨的大换血。DARPA首先想到的是找DEC,毕竟VAX就是他们的产品,但他们需要对操作系统进行大幅度的修改,想到DEC对于自家VMS的保守态度,上门搞不好要碰个大钉子,自己动手吧,又没下嘴的地方——正犹豫间,BSD的出现让他们眼前一亮——完全支持VAX,可获得源码,可定制,可移植,简直就是个度身定做的系统!
于是他们找上了Berkeley。Berkeley当然是有见识的,这么有意义的活计上哪去找,共襄盛举那是求之不得啊,于是在1980年两家就签订了一个合同,由DARPA资助Berkeley发展UNIX,以满足DARPA的需要。Berkeley为此专门成立了一个小组叫做CSRG(Computer System Research Group),由Bob Fabry教授负责(就是将UNIX引入Berkeley的那位),Fabry当然很想Joy参加进来,但当时Joy刚通过Ph.D.的考试,为其学业着想,Fabry也不好意思去找他,但没多久Joy就主动找上门来了(一点不奇怪,他不参加倒真奇了怪了:)。
闲话操作系统(十一)
且说 DARPA的一个主要要求就是要将TCP/IP协议集成到UNIX中,他们此前就找了一家叫BBN的公司写好了协议栈,CSRG就安排Joy来做集成工作。没想到的是,没过几天,Joy就完成了——这没什么稀奇,稀奇的是,他根本没用BBN写的协议栈,他居然自己重写了一个,原因竟是,他嫌BBN的那个写得太烂!要知道BBN的那玩意可是一项巨额合同的成果,BBN和DARPA这下觉得太没面子了,肯定有内情,就开会研究,请Joy参加。且说Joy穿着件T恤,蓬头垢面的就进了会议室,满坐西装革履,看着这小子不觉有点发呆,回过神来就问他,你是怎么写出来的(估计还存着念头,以为他以前做过相关研究什么的)?没想到回答简直让他们喷血,Joy说,这个嘛,很简单,你读协议,然后编码,就行了。:)
最早集成Joy所写的TCP/IP模块的BSD版本是4.1a,跟3BSD之间隔了两个版本,4.0和4.1。这两个版本的进步不算大,4.0版主要是加进去一个Lisp系统(Lisp是一种资格极老的语言,由MIT的John McCarthy教授于1958年发明,仅比史上最早的高级语言——1957年由IBM开发的Fortran——晚了1年而已,这种设计理念奇异的语言非常与众不同,它对程序与数据不加区别,对其缺乏了解的人看到它浑然一体、遍布密密麻麻括号的源程序肯定会一头雾水,但它有着强大的表达能力,尤其适合符号和文字处理,是AI(Artificial Intelligence,人工智能)领域的首选语言——目前可能是它的一个变种Scheme用得更多些,著名的AutoCAD自带的脚本语言AutoLisp就是基于它,还有著名的Emacs也是Lisp写的,还附带一个完整Lisp版本——Emacs Lisp),以及一个增强的邮件处理系统,这个版本的生存期只有几个月,因为它存在一些严重隐患,大家抱怨颇多,于是CSRG很快就推出了4.1版,这个版本主要是对4.0版做了些修修补补,此外大一点的改动就是增加了自动配置代码功能。
本来按Berkeley的命名规则,4.0版过后就应该是5.0版,但这时AT&T有意见了,因为他们自己推出的UNIX就叫System V,两个5容易混淆。BSD本来就是从AT&T那儿发展来的,人家一直都很宽容,况且到当时为止,AT&T的代码都还没替换干净,吃人家的嘴短,当然不好争什么,于是Berkeley决定,4字头就不往上升了,以后的版本只升小数点以后的数字(有点致敬的意思,好比芝加哥公牛队在乔丹退役后就不再使用23号球衣:)。
而4.1a这个版本相当于现在软件的α版(内部测试版),Joy不仅为它集成了TCP/IP,还增加了多网络协议的支持能力,多个网络协议可以同时使用,这在以后成为操作系统的设计标准。因为4.0版的失败,所以CSRG决定发布新版本要慎重一点,所以先自己试用,但与现在的情形一样,这个版本还是流传了出去,并勾起了大家的兴致,不少FANS开始对4.2版充满期待。
但4.2版的诞生颇为艰难,自1982年4月4.1a版发布开始,又过了1年零4个月,中间经历了4.1b和4.1c两个非正式版本,经历了Bob Fabry(还记得他吗?CSRG的BOSS,UNIX由他引入Berkeley,他的离去很大程度上是因为不堪重负——这种高强度的开发工作是很折磨人的)和Bill Joy(他于1982年以唯一一名技术人员的身份与Scott McNealy等4名Stanford的学生一起创办了SUN公司,如你所知,这是当今最著名的生产UNIX机器的公司,但他关于BSD的工作仍持续了好几年)的离去,才于1983年8月正式发布。
这一版本非常成功(尽管问题也不少,主要是因为一堆新增的功能还没有很好的优化),发行量超过以往版本的总和,并且打败了AT&T的System V,成为广大UNIX厂商制作移植版本的首选,著名的如SunOS 4就是基于它,AT&T在SV的后续开发中也集成了4.2版的许多精华(抄袭是最好的赞美,谁说的来着:)。事实上,这一版本影响如此深远,尤其是其网络模块,此后几乎所有重要的操作系统都从中借鉴,更有一些是直接拿过来用。
除了骄人的网络功能,4.2版还有许多其它方面的重大进步,如:新的、更强大的文件系统以及磁盘配额机制,新的信号机制,以及独立出来的输入/输出系统,还有全新的文档——这些都是大动作,而且就这还是迫于发布压力进行了妥协,不然还准备对交互通讯机制和虚拟内存管理模块开刀:)。
所有人都表示赞赏——除了BBN(就是那个写了最初的TCP/IP协议栈并被Joy给否了的公司)。他们对Joy的那一箭之仇一直耿耿于怀,于是不停地向DARPA抱怨,说自己的理念是如何先进,设计又是如何优秀,BSD如果采用了我们的模块一定会跑得更欢云云~~~~,DARPA也不禁动了心,就责成CSRG重新评估BBN的代码,CSRG的高手一看,也确实有可取之处啊,但要说把自己的代码给换掉,也未见得可行,毕竟自己的代码此时已是经过考验的,于是就提出一个折衷方案,把两套代码都包含进去,由用户选择。但这下DARPA又不同意了,这可是网络模块,搞两个政府,自立山头,不是明摆着添乱吗?坚决不行!公说公有理,婆说婆有理,这也不是办法,于是干脆,DARPA请了个第三方的专家——Ballistics实验室Mike Muus来做评估。Muus忙乎了一个月之后,结果出来了,Joy的代码通过了所有测试,而BBN的呢,在高负荷的时候时不时会死给你 4.3版过了三年才发布(1986年6月),尽管间隔时间如此之长,但这一版远没有4.2版那么富于革命性,它主要是对4.2版做了些修补和优化,虽然反响不错,但也仅此而已,对业界的影响远不能与4.2版相提并论。比较值得一提的是,在发布后的晚些时候,CSRG的两个牛人,叫做Casey Leedom和Keith Bostic的,对这一版做了一次匪夷所思的移植。
闲话操作系统(十二)
从第3版开始,BSD就是基于VAX机在搞开发,VAX是32位机,通常配有 1M内存(两个内存块,每块面积有4分之1平方米,还可以配更大,寻址能力4GB,即2的32次方)及高速的磁盘(容量通常为5MB或10MB,很惊人的说~~~~),所以BSD可以实现诸如内存换页以及新文件系统等技术革新,而Leedom和Bostic现在要做的,是将4.3版移植到PDP-11上。PDP-11我们应该都比较熟悉了,UNIX的第一个正式版本就是在它上面完成的,它是DEC经典的16位机,作为那个年代流传最广的廉价计算机之一,可以理解,它拥有为数众多的FANS。但无可否认,到了1986年,它早已落后了(事实上这时连VAX机都已年满8岁,颇显老态,1年前连微处理器都发展到了32位的Intel 386),以它可怜的64K的内存寻址能力(即2的16次方,这个限制对促进UNIX短小精悍的应用程序设计风格意义重大,不得不说,硬件的简陋往往能促生优秀的软件设计,这一点在Palm系统上也得到了证明)、512K的磁盘要跑4.3BSD简直是说梦话,CSRG里的大多数人虽然都很怀疑,但还是支持他们两个试试看(这么好玩的事换我也会支持,想想看,谁要是能把Windows NT移植到286上面~~~~,呵呵)。让人大跌眼镜的是,这两个牛人不仅移植成功,居然还跑得很好——UNIX的可移植性真不是吹的:)。这个跑在PDP-11上的新系统被命名为2.11BSD(2BSD原本是最后一个在PDP-11上开发的版本),具备和4.3BSD差不多相同的功能,很受PDP-11用户的欢迎,一直陪伴许多PDP-11工作到寿终正寝,据说直到今天,在世界上的某些角落,偶尔还可以找到跑着2.11BSD的PDP-11(PDP-11起码也有30多岁了,不管是作为一台计算机还是作为一个电子设备,这样的高寿都很值得骄傲的说,而2.11BSD作为一个软件,20多年的寿命倒不算太难得,一些行业用户的程序往往非常古老,比如一些银行系统里大型机上的Cobol代码,有三四十年历史也不稀奇)。 4.4版的BSD于1994年6月发布,这一BSD的最终版本距离4.3版足有八年之久(Vista有望一比,巧的是,微软也吹风说Vista可能是传统Windows的收关之作,集大成者想来是得多些时间酝酿),虽然间隔如此之久,但4.4版也说不上有太大的技术进步(大概是4.2版用力过猛,加上别的问题困扰,CSRG一直没缓过劲来),但它解决了一个很关键的非技术问题,可说是意义非凡。这八年中曲折甚多,值得一说。
截止1986年,4.3BSD除了一个BT的PDP-11移植版外,并没有向其它机器移植,一定程度上是因为系统中有许多针对 VAX特有硬件的设计,移植并不容易,而此时VAX已日薄西山,开拓新疆域迫在眉睫,CSRG想一劳永逸地解决这个问题,于是由Joy操刀,将BSD的内核分离成两块,一块依赖于机器,一块则独立于机器,这样可以大大简化移植工作的难度。这项工作于1988年完成,CSRG发布了一个叫作4.3BSD-Tahoe(Tahoe是加州的一个高山湖,旅游胜地)的版本,于是许多移植工程就基于这一版展开了。
这时另一个问题又暴露出来,因为BSD中包含有AT&T的代码,如果想获得BSD代码的使用权,你还得向AT&T购买一份源代码许可证,随着BSD越来越受欢迎,AT&T的价码也是越来越高(最初只要一万多美元,后来涨到好几万),许多人就开始抱怨,尤其是那些计算机公司。他们多半看中的是BSD中的网络模块,而这一部份根本不关AT&T的事(实际上AT&T自己的SVR都是用的BSD的网络代码),现在却非得去出这一份冤枉钱,实在是太亏了。于是许多人都建议CSRG把AT&T的代码去掉,把网络模块单独拿出来卖,或者干脆搞一个完全属于自己的版本(著名Hacker,自由软件的倡导者Richard Stallman早在1987年就向CSRG提出过这种建议,当然他是站在更高的立场,是为了让UNIX摆脱商业公司的束缚)。
完全去除AT&T的代码的代码是一项大工程,所以CSRG先拿出了一个叫做Networking Release 1的东东。这不是一个完整的系统,而仅仅是一个网络模块,该版本于1989年发布,同时发布的,还有CSRG对这一版本拟定的一个许可协议。也许是受了Stallman的GPL(General Public License)的影响,这个协议鼓励修改源码和再次发布,而且它非常宽松,比GPL宽松得多,它允许再次发布时只发布二进制版本,而不附带源码(这在GPL中是不允许的),只需附带完整的版权声明即可(“完整”的意思是,要把该软件的渊源交待清楚,包括它来自Berkeley,以及中间还经过谁谁的修改——怎么觉得有点象纪念碑,呵呵)。后来在Networking Release 2发布时仍使用了这一协议,到4.4版发布时,这一协议演变为BSD License,后来FreeBSD又将其修改为FreeBSD License,基本上也都大同小异(因为许可太宽松,所以很多人都把FreeBSD拿过来,修改一番再拿去卖,比如前些时闹的沸沸扬扬的所谓国产操作系统“麒麟”,只是国防科技大学他们(还有其他几个公司,不一一点名)的做法未免有失厚道,不遵守版权协议也就罢了,还企图掠人之美、瞒天过海)。
闲话操作系统(十三)
这样宽松的许可协议,等于认可一个人买下后,就可以无限制的Copy给其他人,事实上也正是这样,刚一发布,就有一些著名的FTP站点提供开始匿