OS演义(二)
上文说到比尔盖茨和保罗艾伦在电话中把一个空中楼阁许诺给了MITS公司的老板罗伯茨,他们面临的挑战是可想而知的,其中核心的问题有两个:第一,Intel 8080芯片的能力实在有限(当时没有几个人认为它已经强大到使BASIC语言能够正常运转),并且Altair只安装了4K字节的内存,这远远小于运行BASIC所需要的数量,这双小鞋能穿进去吗?第二,前文提到,他们手上根本没有一台真正的Altair(这时罗伯茨唯一的一台Altair正在用来到处展览,他恐怕也不想再寄第二次了),甚至没有一块真正的Intel 8080芯片(即便有,他们也不可能用它去组装一台Altair)——连上那“楼阁”的梯子都没有!可这两个小伙子呢,真是初生牛犊不怕虎,硬是以他们的胆量与天才接受了这样的挑战,开始创作他们平生的第一件“大作”。
他们在中学时就经常使用DEC公司的PDP计算机。PDP即Programmed Data Processor,可编程数据处理机,DEC公司于1960年推出PDP-1,使得用户可以花12万美元去买一台PDP,而不是花上几百万美元去买IBM的“大铁块”,自那以后,PDP系列一直在小型机市场占有很大比重,且很多学校装备的都是PDP系列的计算机。而保罗艾伦在华盛顿大学念书时,更是天天泡在机房里,所以他们对PDP计算机了如指掌,这次,他们又把哈佛的PDP-10大材小用了一回——保罗艾伦在认真研读了Intel 8080芯片的使用手册之后,根据其性能编写了一个仿真程序,用哈佛的PDP-10来模仿罗伯茨的Altair。由于他们没有用过真正的Altair,所以仿真的效果究竟怎样,要到向罗伯茨交货时才能见分晓。接下来的几个星期,他们夜以继日地工作,睡在键盘前面和地板上成了经常的事情,而醒来之后又开始不停地敲打键盘(艾伦后来说到“盖茨似乎在睡梦中也能编写程序”),这样的生活一直持续到他们的BASIC从空中降落到地面。
在这期间,他们又给罗伯茨写了一封信,以说明他们的BASIC进展情况和双方的合作方式。为了郑重起见,他们使用了自己公司的信笺(他们俩在湖滨中学一起读书时创办了交通数据公司,那时他们还不生产操作系统),可是正是这信笺出了毛病——上面的地址、电话全是湖滨中学的,当罗伯茨真的对这封信感兴趣并打电话时,情形可想而知。至于这个小误会,日后是自会解除的,当务之急还是把大脚放到小鞋里面去。
终于,在经历了五个星期的废寝忘食之后,他们有了成果——为Altair编写的BASIC已不再是空中楼阁,而是囊中之物了。盖茨的摇摆与踱步也没有白费,因为比尔盖茨说过“当我思考的时候,时常前后摇摆或踱步,因为这样可以有助于我把精力集中在一个想法上,排除干扰”。这原本属于他的个人习惯,可后来由于他在微软公司的许多崇拜者的效仿,使得多了一层企业文化的色彩。他们终于可以通过罗伯茨的MITS公司销售他们的BASIC了。在对BASIC进行了进一步的改进之后,他们俩与罗伯茨再一次取得了联系。
艾伦负责“押解”这份宝贵的BASIC,当飞机快要到达目的地的时候,艾伦发现他们的BASIC中有一段引导程序没有写,没有它可怎么进入BASIC呀!后来这一段程序是有了,至于是不是象传说中的那样是在飞机着陆的一刹那才编写完成的,就不得而知了,反正是够紧张的。在两位小伙子眼里,能够开发象Altair这种旷世之作的,一定是一家相当体面的大公司,所以艾伦在上路时穿的是自己最好的一套西服,而到机场来给艾伦接风的罗伯茨则是一身并不干净的牛仔服,至于坐骑嘛,是一辆已经开了6年的小卡车。看到艾伦的穿戴,罗伯茨也不敢怠慢,把艾伦送进了当地最豪华的一家旅店,害得艾伦晚上只好给盖茨打对方付费的电话来汇报情况了。谁也没有想到,在最初的“二合一”操作系统诞生的时候,还曾有过这样的尴尬。
第二天上午,在罗伯茨的办公室里,一台经过改进的Altair。已经连接了键盘和纸带阅读机,并且具有6K内存一切准备就绪,就等着艾伦手里的BASIC登场亮相了。艾伦还是用他们在中学时就常用的纸带阅读机来输入BASIC,它能够通过光电设备识别纸带上固定位置是否被打孔,从而“阅读”出0和1,就在他导入他们的BASIC的时候,仍然没有人知道这个在PDP-10上的自制模拟环境下编写出来的软件究竟能否工作。结果是令所有人都满意的——经过这套“二合一”操作系统的引导,Altair进入了BASIC的解释状态。此时双方都有着自己的惊讶,罗伯茨认为艾伦和盖茨的工作成果远远超出自己的期待,而令艾伦难以置信的是罗伯茨能够开发出Altair,却不能让它工作。在这一套Altair的BASIC上编写的第一个应用程序是艾伦当时随手写的一个模拟在月球登陆的小游戏(他和盖茨在湖滨中学读书时就写过类似的程序),从此,Altair真的可以使用了,计算机也真的从“贵族”走到了“平民”,个人电脑历史的序幕从此拉开,虽然BASIC语言并非盖茨和艾伦所发明而是由美国达特茅斯学院的 John Kemeny和Thomas Kurtz于1964年发明,但他们的那一套“二合一”操作系统写进了个人电脑操作系统发展的历史,虽然它只有小小的几K!
此后,盖茨和艾伦把他们的交通数据公司改名为微软公司,并且与罗伯茨签订了关于微软BASIC与Altair捆绑销售的合同,艾伦还一度担任MITS公司的软件部经理,再后来就是罗伯茨的经营策略不对头,导致了大量盗版的出现,最后MITS由于经营不善,被迫“出阁”。这期间,微软还因为版权纠纷与收购MITS的Perterc公司打了一场官司,而微软在操作系统领域的再一次动作,则是在80年代初IBM插手个人电脑市场时的事情了。
继Altair之后,个人电脑以空前的速度发展,在1977年这样的发展达到了顶峰,那时隔不多久便会有新的公司诞生,有新的机型出现,而它们大多也和Altair一样,使用“二合一”操作系统——在系统引导的时候直接加载BASIC。这其中著名的产品有我国的电脑爱好者非常熟悉的APPLE II电脑,它是由苹果公司于1977年推出的,在它的只读存储器ROM中内置了苹果公司的操作系统AppleSoft和整数版本的BASIC,如果使用磁盘驱动器,APPLE II也可以用DOS 来引导,当然,这是苹果DOS,与后文讲的PC机上使用的DOS相去甚远,要是安装了针对APPLE II设计的CP/M扩展卡,还可以直接用CP/M系统引导。当时很多应用软件都是基于CP/M系统的,能上CP/M系统就意味着有非常多的应用软件可供使用。除了APPLE II以外,美国Tandy公司的TRS-80和前西德Commodore 公司的Commodore PET等产品也都是大家比较熟悉的。后来的Commodore VC20还在电脑网络犯罪史上有所记载。两个美国高中学生使用这种电脑非法进入ARPA Net。此网络1969年由美国国防部创办的一个全美计算机网络,最初是出于军事目的,但后来逐渐为科研和教育部门服务,并且它通常被认为是Internet最初的原形,他们成为上面的“黑客”,并且因为财产来历不明(飞机票)而被认定盗用他人的信用卡号码,从而成为第一起计算机网络犯罪案的主犯;在80年代末,又有几个德国间谍用Commodore VC20打入了美国军事部门的计算机,从那里窃取了情报。这种Commodore VC20电脑也和当时很多的个人电脑一样,都是采用“二合一”的操作系统,这种操作系统的缺点是通用性比较差,为一个牌子的电脑编写的软件不能在另一个牌子的电脑上运行,不同牌子的电脑的磁盘格式也都不一样,它们之间唯一的共同之处在于都使用BASIC,在一些电脑公司为自己的产品装配这种“二合一”操作系统的同时,另一种通用的操作系统正在不断地发展。
CP/M——通用的操作系统
学过政治经济学的人都知道,在市场经济中有一根无形的指挥棒——价值规律,它的作用之一便是“使资源更合理地分配”。对于产品适应市场需求的厂家,这根指挥棒带来的是良性循环;越是产品适销对路,就会有越多的资金回笼和外部投资,企业占有的社会资源(资金、人才等)就越多,企业便越有能力开发、生产适销对路的产品……这样的良性循环使得企业不断地发展壮大,因为它们紧紧跟着指挥棒,没有走调;相反地,对于跟不上指挥棒的企业来说,被市场淘汰是早晚的事情。
只要是有市场存在的地方,价值规律便会起作用。这是不以人的意志为转移的,在软件领域,在操作系统领域也是如此,它直接反映到操作系统的市场占有率上。其实这也很好理解;每多卖出一个拷贝,便多占有了一份市场,同时也多回笼了一份资金。可是你要知道,对于操作系统来说,价值规律带来的经济收益还是次要的,市场占有率的大小才是生死存亡的问题。为什么呢?因为在操作系统领域也存在着一根类似的指挥棒,不过这里的曲调不是价值规律中的“符合市场需求”,而是操作系统的通用性:一个软件公司不可能生产所有的软件产品,操作系统厂商必须与应用软件厂商相互合作。一个操作系统越是通用,在它上面编写的软件就会有越多的潜在用户,这样就会有越多的应用软件厂商为这个操作系统编写软件,它上面的软件资源也就变得越丰富,而这将吸引更多的人在众多的操作系统中选择这一个,它将拥有更大的市场占有率,将变得更通用……这根指挥棒在操作系统发展的历史上屡显神威,其中第一次的收益者是CP/M操作系统的作者基尔道尔教授(Gary Kildal)。
这位基尔道尔教授原本在加利福尼亚州蒙特利市的美国海军研究生院工作,他非凡的才能使得他在同行中享有极高的声誉。而在他本人头脑中也确实有一套学者的哲学;编写复杂的程序,只是因为它要求极高水平的逻辑思维能力而难以编写,只是为了满足智力上的好奇和思维上的愉悦,而并不是为了多大的商业利润,有人把这看作是一种“舍我其谁”的自豪感;生活的最大哲学在于要活得幸福而不在于商业竞争的成败(学术地位远远要高于在商业上的作为)。对这种生活的哲学我们不好做过多的评价,但它确实在后来使得这位基尔道尔教授失掉了本世纪软件行业最大的一笔买卖。当然,在这之前,他的CP/M系统在操作系统的历史舞台上“独霸江湖”长达八年之久!
CP/M系统对个人电脑操作系统最大的贡献在于它使操作系统变得通用化并且将软盘驱动器引入了个人电脑,最早使用软盘驱动器的是IBM,它于1971年在它的3740系统中采用了8英寸单面单密度软盘,所有这些,直接奠定了操作系统在80年代高速发展的基础。同基尔道尔教授的哲学相吻合,CP/M系统最初也并不是为了商业目的而开发的,隐藏在CP/M系统背后的“推动之手”只是教授本人对于技术的好奇。
时间退回到1972年,基尔道尔教授在广告中看到了Intel公司那颗创世纪的4004芯片的宣传:“宣告集成电路新纪元:微电脑浓缩在单颗芯片上!”,再配上形象的宣传画,这在电脑还是“庞然大物”的时代是相当惹眼的。并且正是在4004的宣传中,Intel公司第一次打出了“英特尔说到做到”即Intel Delivers的广告语,90年代的广告语是Intel Inside。他用25美元买下了一块Intel 4004芯片。此时,基尔道尔教授的主要工作还是在研究生院教书,这使得他有充裕的业余时间来写些程序,并且摆弄他那颗心爱的4004芯片。他在4004芯片上做了许多的尝试,甚至还想过用它来进行单板机开发,做一种航海上使用的专用计算仪器,但最后的结论是4004还太不成熟,它的运算速度和准确性制约了它的用途。尽管如此,这位教授还是对这种微型芯片产生了浓厚的兴趣,虽然它的性能与小型机相比相去甚远,但它却可以使人的创造力最大程度地发挥,也许4004芯片正是靠这种对于好奇心和创造力的满足吸引住了这位天才的计算机教授。后来基尔道尔教授参观了英特尔公司的微处理器分部,就连这位天才的教授也对英特尔公司的技术以及效率表示惊讶,再后来,他索性在英特尔公司担任了一个顾问职务,每周花一个休息日在英特尔上班。由于担任了这样的职务,使得他更是少不了与英特尔公司的微处理器打交道,渐渐地,这位风格严谨的学者教授也变得有些象个车库创业的电脑爱好者了他简直对这小小的芯片着了迷,甚至不想再回到那“庞然大物”上去工作了。
在4004芯片发表一年以后,英特尔公司于1972年推出了比4004功能更强大的8008芯片。4004是4位芯片,而8008已经是8位的了。那时的小型机都是采用的8位或者16位的芯片,要让微处理器追赶小型机的性能,必须向8位和16位进军。作为顾问的基尔道尔教授自然也得到了样品,他便开始在8008芯片上打主意了。由于8008在很多方面还都不成熟,基尔道尔教授的很多开发工作还是在小型机上完成的。他与保罗艾伦采用的是同一种方法,即先在小型机上编写一份8008的模拟程序,然后再在这个模拟的环境中开发、调试针对8008芯片的程序。在开发过程中,基尔道尔教授搞出了在8008芯片上使用的PL/M语言,这实际是PL/I语言在8008芯片上的版本。PL/I,Program Language I,即程序语言I,一种为数值计算、数据处理和系统程序编制而设计的计算机语言,主要用于编制大型机上的程序,有了这样的语言环境,也就可以在8008芯片上开发一些象样的软件了。
当初有很多人对8008感兴趣,但大家都认为8008的性能还是太有限,不能完成什么大的工作。确实,在英特尔公司早期的芯片产品中,很少有被用作电脑微处理器的,那些芯片主要被用在诸如控制电路一类的地方,但是很快英特尔公司就于1974年推出了功能强大得多的8080芯片。从那时起,英特尔公司一直是每两年推出一代芯片。在这块开创个人电脑纪元的芯片中,增加了用作电脑微处理器所需的存储器功能,并且由于采用了新的硅片工艺,使得它的速度比当初的4004快了20倍。8080好象一把钥匙,开启了个人电脑世界的大门,它的推出引起了无数人的兴趣,他们中有为之编写BASIC的盖茨和艾伦,有设计Altair的罗伯茨,当然,也有开发CP/M系统的基尔道尔教授。
由于在PL/M语言上的贡献,基尔道尔教授得到了英特尔公司的一台以8080芯片为微处理器的小电脑、一台监视器和一台高速纸带阅读机。其实在很早的时候,英特尔公司就自己生产电脑产品,但不叫个人电脑,而叫“蓝箱子”,并且销售对象也不是电脑爱好者,而是卖给那些采购8080芯片的厂商,作辅助开发之用,此时基尔道尔教授认识到,要编写一套操作系统让电脑干活,就必须有一套有效的存储设备,而当时的选择不多:纸带阅读机、磁带机或者是磁盘驱动器,最后基尔道尔教授选择了磁盘驱动器,这种方式我们今天仍然在使用。但是要让磁盘驱动器工作,在硬件上还需要一个磁盘控制器,这个控制器的设计工作是由别人来完成的,基尔道尔教授则花了几个星期的时间搞出了CP/M系统的雏形——用他自己的PL/M语言编写的。最后,磁盘部分被完美地加入了这个操作系统,想来想去,基尔道尔教授把它命名为CP/M(Control Program for Microcomputer,微型计算机控制程序)。此时的CP/M已是一个“五脏俱全”的磁盘操作系统了,它已能够对下面的硬件二进制军队进行良好的指挥。
CP/M是当时最好的操作系统,并且由于可以在所有以Intel 8080芯片为微处理器的电脑上使用,它在先天上就具备了成为行业标准的素质。后来,基尔道尔教授为了销售他的作品,在妻子的劝说下,成立星际数字研究公司,后更名为数字研究公司(Digital Research,即DR——记得90年代曾流行一时的DRDOS 6.0吗?)。当时,基尔道尔教授并没有意识到他的CP/M是多么伟大的一件作品,在商业上也没有想让它成为操作系统市场的“老大”,所以最初的定价低得惊人——他的第一个客户为了得到CP/M的许可证只花了90美元!一年之后,这个许可证涨到了两万美元以上,但还是有很多公司来买,因为CP/M确实是一套非常好的操作系统,并且这个价钱仍然使他们有利可图,于是,有越来越多的公司销售CP/M系统,其市场占有量也就越来越大,应用软件厂商也就更愿意为这套操作系统开发软件……于是就有了前文提到的那个良性循环,CP/M刚好跟上了指挥棒下的曲调。
在CP/M成为操作系统市场霸主的过程中,一家名为救生艇协会(LifeBoat Associates)的软件经销商起了相当大的作用;它为基于CP/M系统的应用软件提供了一个通畅的销售渠道。当CP/M系统刚开始流行的时候,这个救生艇协会还只是CP/M用户的一个俱乐部,后来开始做软件的销售工作,并且组织出版了基于CP/M系统的软件目录,很多开发CP/M软件的厂商最初就是通过这个软件目录销售他们的软件产品。在这些厂商中,包括后来以操作系统获得迅速发展的微软公司,那时微软的主要产品还是它的程序语言系列,前文提到,它的BASIC有其独到之处,能够完成一般操作系统的功能,但其它的产品,比如FORTRAN和COBOL语言,都属于严格的应用软件范畴,即需要一个操作系统在下面支持,而微软选择的操作系统正是基尔道尔教授的CP/M系统,救生艇协会帮助这些厂商销售基于CP/M的应用软件,在良性循环中起了良好的推动作用。
在良性循环过程中,CP/M系统的版本也在不断地更新:1973年最开始的版本叫做1.3,1975年的1.4版本使CP/M登上了“霸主”的地位,此后,一方面继续更新版本,先后搞出了CP/M 2.0和CP/M 2.2,另一方面发展了CP/M的大家族——基于Intel 8080和Zilog Z80芯片的版本叫做CP/M-80,后来出现的基于Intel 8088和8086芯片的版本叫做CP/M-86,基于摩托罗拉68000芯片的版本叫做CP/M-68K,除此之外,还有多用户的MP/M-80、MP/M-86等产品,俨然一个坚不可摧的大家族。
在当时的个人电脑厂商中,有的购买通用操作系统(其中CP/M在高峰时占领了90%的市场),而另一些则保留自己的操作系统(前面提到的苹果和Commodore等公司就是如此),CP/M不仅争得了通用操作系统市场的头把交椅,还向那些保留自己操作系统的电脑展开了攻势。这其中最著名的要数针对APPLE II电脑的APPLE II转换卡了,其实,这并非基尔道尔教授所为,而是一些为CP/M开发软件的应用软件厂商觉得放曲APPLE II市场实在太可惜,于是便开始琢磨怎样才能把基于CP/M的软件搬到APPLE II电脑上来使用,对于APPLE II电脑的用户而言,如果能够使用CP/M系统下的应用软件,无疑手里的机器将会有更大的价值。既然双方都愿意,又何乐而不为呢?当时微软有很多产品都是基于CP/M系统,于是保罗艾伦,找人设计了一种Soft Card的APPLE II软件转换卡,即通常所说的Z80卡,这种卡上带有Z80处理器,能够接管APPLE II的总线控制权、内存地址变换以及接口分配等。Zilog公司的Z80是与Intel 8080兼容的芯片,其实Zilog公司的创始人费根(Federico Faggin)原本是英特尔公司从4004到8080芯片开发的功臣,后来自己跳槽单挑一摊,成立了Zilog公司(在名字中取一个Z,有一种空前绝后的意味),他的Z80芯片是Intel 8085芯片(8080的后继产品,最初的8080芯片需要8224、8228两块芯片的支持,而这三者在8085中被集成到了一起)的一种改良版,曾与8085在市场上有过竞争,结果是使得它们成为市场的标准(这两者本身是互相兼容的),也加速了CP/M成为市场标准的过程,只可惜Zilog后继乏力,不久便从市场上消失了。这种转换卡推出以后,立即成为畅销品,第一年便卖出了两万五千块,到80年代初,共有十万多台APPLE II安装上了这种转换卡。这样一来,APPLE II反而成了拥有最多CP/M用户的机型。
CP/M的成功简直象一个神话,它在作者基尔道尔教授的不经意之间成了8位机操作系统的行业标准,并且统治市场长达八年之久,直到蓝色巨人IBM于80年代初从16位机开始插手个人电脑市场。其实基尔道尔教授完全有机会让CP/M继续称霸操作系统市场的,但是这一次他没有跟上指挥棒的节奏。在70年代操作系统称霸的CP/M,在即将到来的80年代里是稳坐江山呢,还是被扫地出门?