饭饭TXT > 海外名作 > 《乐者为王》作者:[美]李纳斯·托沃兹 大卫·戴蒙【完结】 > 乐者为王.txt

第二章 一种操作系统的诞生

作者:美-李纳斯·托沃兹 大卫·戴蒙 当前章节:15385 字 更新时间:2026-6-22 19:12

1 、昨天的电脑

有些人记忆时间的方法是通过他们曾经驾驶过什么样的车子,干过什么样的工作,或在什么地方住过,以及追求过什么样的情人。而我的生涯却是由电脑来划分的。

我成长期间只有过三台电脑。上面提到过的 VIC-20 ,是我外祖父留给我的遗产。它是“家用”电脑中的一种,是当今 PC 机的前身。般长 64 电脑后来成了 VIC-20 的老大哥,接踵而至的是 Amiga ,这种机器在欧洲特别受欢迎。这些电脑从来未像 PC 机甚至苹果 II 那样流行过,我在玩 VIC 的时候,还 ?I 已经很流行了。

在那个年代, PC 机普及之前,家用电脑的多数程序使用的都是汇编语言。它们都有自身的操作系统,等同于 PC 机里的 DOS 。由于机器不同,操作系统很可能是一种简单的格式,或是增强的格式。那时没有什么技术标准,许多公司都想控制市场。最有名的公司之一就是 Amiga 。我现在句子的开头都要用上“在那个年代……”,真是不可思议。

等我对 VIC-20 玩得已经很精通后,我便开始攒钱想买一台下一代的电脑。这在我生活中是一件大事。前面我已经提到过,我对我的家人在某个特定的时间住在什么地方,以及其他许多事情都记不清了,但我购买第二台电脑的过程却很难忘记。

我攒了一些圣诞节和生日的压岁钱(我生于 12 月 28 日 ,那两个节日基本上凑在了一起)。有一年夏天我还参加了赫尔辛基公司清洁队,挣了一些钱。赫尔辛基的许多花园没有美化,保养得不太好,更像是一些娱乐场所和绿地,长着高高的树林。我们所做的就是锯掉长高的灌木丛并把死掉的残枝拾走 — 这种活儿还挺有意思。我一贯喜欢室外运动。曾经一度,我还当过邮差,但送的不是报纸而是垃圾邮件。细想起来,我在夏天基本不怎么打工。但在那些日子里还是干了一些活。总体来讲,我的钱基本都是学校发给的奖学金。

在芬兰,给学校捐款是很普遍的事情,连公立小学也有人赞助。所以从小学四年级开始学生就能得钱,发放的方式完全由建立基金的人决定。我记得有一种捐款是奖给班里最受人爱戴的学生的。当时我们六年级,全班还真的举手投票表决,看谁能得到那笔钱。顺便说一下,我当时未被选中。奖金仅有两百芬兰马克,当时只值四十美元,但对一个最受欢迎的六年级学生来说似乎已不是个小数目了。

通常情况下,在某一个学科或体育项目中有突出表现的学生都能得到奖学金。许多奖项都是由具体的学校发放或由州政府赞助的。有些奖学金随着时间的推移数目越来越少。我记得有一种奖项最后只值一毛钱。发生这种情况时,学校也会出些钱补进去,但是尽管如此数目仍然不多。这样做的目的仅仅是在每年当中把发放奖学金的传统继续下去。芬兰对学术传统非常认真,这当然不失为一件好事。

于是我作为优秀的数学学生,每年都能得到奖学金。上高中后,奖金的数目越来越大,最多的时候可以达到五百美元左右。因此我买第二台电脑的钱基本上是这么来的,我每月的生活费肯定付不起电脑钱。此外我还从我爸爸那里借了一些钱。

当时是 1986 或 1987 年。我十六或十七岁。那个时候我已不再打蓝球。决定买何种电脑之前,我花了大量时间进行了一番调查。当时的 PC 质量还不太好,我便决定不买 PC 机。

我选择的是 Sinclair QL ,你们当中的许多人大概太年轻,对这种机子没有记忆。

下面是 QL 的简单历史:当时, Sinclair 是市场上 32 比特的机器之一,主要用于家庭。那家公司的创始人克里夫 ? 辛克莱尔 (Clive Sinclair) 在英国等同于史蒂夫 ? 沃斯尼亚克 (Steve Wosniak) 。他制作出这些电脑的配套元件,然后以 Timex 的品牌在美国销售。没错,一家制造钟表的公司进口 Sinclair 的元件,然后再打着 Times 品牌在这里卖出。早期销售的也是配套元件,他后来开始销售组装好的机器。

Sinclair 的操作系统叫做 Q-DOS 。这种操作系统是专门为那种电脑写的。按照当时的情况,它的 BASIC 语言非常先进,而且有着不错的图形显示。那种操作系统最令我兴奋的一个特点是它能进行多重任务处理。你可以同时操作多个程序。然而其 BASIC 部分却不是多重任务处理,所以同一时间之内你不能操作超过一个以上的 BASIC 程序。但如果你用汇编语言编写自己的程序,就能让操作系统列出时间表,把时间分隔开来,这样你就可以在同一时间操作多个程序。

这种电脑有一个 8 兆赫的 68008 芯片,它是摩托罗拉 68000 芯片的第二代,是个更加便宜的版本。在内部,第一代 68000 芯片是 32 比特,但在外部,却以 16 比特与 CPU 之外的设备进行连接,例如存储器和硬件附加装置。由于它只能在一个时间内从存储器上载 16 比特,因此 16 比特的操作常常比 32 比特的操作要快。这种结构非常受欢迎,今天在许多嵌入装置和轿车里仍然有人使用。虽然芯片已经不同,但却是基于相同的结构生产的。

我的电脑中的 68000 芯片在与 CPU 之外的设备连接时使用的是 8 比特,而不是 16 比特。但虽然它与外部设备互动的是 8 比特,其内部却是 32 比特的。这就使它在编程方面非常不错。

它的内存是 128 千字节,不是兆字节,这在当时对家用电脑来说已经非常大了,而被它所取代的 VIC-20 仅仅有 3.5 千字节的内存。因为它是一台 32 比特的机器,所以能毫无困难地读取所有的内存,这在当时是前所未闻的。我之所以要买这种电脑便是出于这个原因。它的技术非常有意思,我喜欢它的 CPU 。

我的一位朋友认识一家商店的老板,我希望能在他那里打折买这种电脑。但等货的时间太长,于是我便前往赫尔辛基一家最大的书店,因为那里有一个电脑柜台。我就是在那里购买的。

那台电脑花费了我差不多两千美元。当时的情况是,低档电脑的价格总是在两千美元上下。只是在最近两年这种情况才有所变化,现在你只需花五百美元就能买一台 PC 机。这种情况和造汽车一样,没有人愿意生产低于一万美元的汽车。在某一段时间,低于一万美元就不值得制造。不错,公司完全可以造出销售价格为七千美元的汽车,但汽车制造商们认为,凡是能出得起七千美元的人,如果能买到附加的标准设备,比如空调,花上一万美元他们也高兴。假如你把今年出产的低档轿车同十五年前的同类轿车相比较,就会发现,它们的价格大体一致。其实,将通货膨胀的因素去除,它们的价格或许稍微便宜一点,然而质量却好得多。

过去的电脑就是这样。当电脑还不是人人都买的商品时,你就只能忍受两千美元的昂贵价格。假如一台成本很低的电脑价格非常昂贵,公司就无法大量地进行销售。但生产商制造电脑的成本并非很低,所以公司若是卖得很便宜就不合算。人们总是希望多花二百美元买台更好的机器。

最近两年,制造电脑的成本已经大幅度降价。甚至低档的电脑质量也非常好。公司已经失去了许多愿意多付二百美元买一台稍好一点机器的客户,它们就只好依赖价格进行推销了。

我得承认, QL 的卖点之一就是它的样子非常酷。整个机身是无光泽的黑色,带着一个黑色键盘。整个样子有棱有角,而不是那种圆圆的漂亮的机型。它的造型有点走极端。键盘有一英尺厚,因为它与电脑联为一个整体。当时许多家用电脑就是那样设计的。在键盘的右端,即应该是小键盘的地方,有两个具有革新意义的 Sinclair 微型驱动器,它用的是只能在 Sinclair 上使用的无限循环磁带。它们的作用就等于软驱。因为它是一个长长的圆圈,你可以进行旋转,直到点到你需要的东西为止。实践证明这个创意并不是理想,因为它不像软驱那样可靠。

于是我花两千美元买了一台 Sinclair QL 。我用它所做的就是不断地编写程序。我总是在寻找有意思的事情做。我有一个 Forth 语言解释程序和编译程序,纯粹是为了用着玩。 Forth 是一种很怪的语言,现在已经没有人使用。它是一种挺好玩而且在市场上有利可图的语言,因为可以做许多事情而在八十年代被广泛运用,但从来没有特别普及过。它对不懂技术的人来说非常难于掌握。其实这种语言也没有什么太大用处。

我开始自己编写工具性程序。我最初为这台机器买的东西之一是一个携带 EEPROM ( 电子可读及可编程序只读存储 ) 卡的扩展底座。这是利用特殊模件自己编写的内存,关机后它仍存在。这样一来,需要时我就能随时获得那些工具,没必要将它们写入内存,于是就能占用珍贵的内存进行编程了。

使我对系统感兴趣的是,我买了一个软盘控制器,因为已不必再使用微型驱动器了。但软盘驱动器上的驱动程序不好使,于是我自己又写了一个。在编写过程中,我在操作系统里发现了一些病毒。我之所以能发现病毒,是因为我编写的一些东西无法操作。我的编码总是很完美的,所以我知道肯定是别的地方出了差错。于是我把整个操作系统都卸掉了。

你可以列出一推关于操作系统的书籍,这些书能帮上忙。你还需要一个反汇编程序,这种工具能把机器语言变成汇编语言。这一点非常重要,因为你要是只有机器语言的版本,执行指令时就非常困难。你会发现一个指令跳到一个数字的地址,读起来非常困难。一个好的反汇编程序可以为数字起名字,也可以让你起名字。你还可以使用它帮助你寻找特殊的相关指令。我自己有一个反汇编程序,可以用它创立相当不错的目录。一旦出现差错,我就可以进入反汇编程序,让它从特殊的地点找出目录,而且我还能看到操作系统将要执行的任何任务。

有时我使用反汇编程序并非是因为出了故障,而是想弄明白它到底能做些什么。

QL 令我讨厌的一个地方是,它只有一个只读操作系统,对于一切都无法改变。它在某些地方的确有 HOOKS ( 是一种消息处理机制,它使程序员可以使用子过程来监视系统消息,并在消息达到目标过程前得到处理 — 译注 ) 。 HOOKS 就是你能切入你自己的编码接管某些功能的地方。但 HOOKS 只出现在某些特定的地方。要是能完全替换你的操作系统就会好得多。在只读存储器中运行一个操作系统是一种非常糟糕的想法。

虽然我说过,芬兰是一个非常乐于接受新技术的国家,但 Sinclair QL 在这个欧洲第七大国却没有站住脚跟。由于 QL 在芬兰的市场非常之小,每当你想为反传统的尖端机器购买升级设备时,只能通过邮寄的方式从英国购买。你必须翻阅许多产品目录,直到找到一家销售你所需要的设备的厂家为止。然后你还得准备好保付支票,再等上几个星期的送货时间。那个时候还没有网上购物和在网上使用信用卡。在我很希望把我的内存从 128 千字节扩展到 640 千字节时,我只能通过邮购的方式获得。我买了一个新的汇编程序,将汇编语言转换成机器码 ( 数字 1 和 0) ,又买了一个编辑器,后者主要是为编程使用的文字处理程序。

新的汇编程序和编辑器都不错,但是它们是在微型驱动器上,无法放入 EEPROM 。于是我自己编写了汇编程序和编辑器,应用于我所有的编程之中。编辑器和汇编程序都是用汇编语言写的,按照今天的标准看上去非常愚笨。这种语言又复杂又费时,我想用汇编语言解决一个问题要比用 C 语言解决一个问题多出一百倍的时间,而当时 C 语言已经存在了。

我给我的机器带着的基本处理程序增加了好几个指令,所以只要我想编辑任何东西,机器就会自动操作我的编辑器,它立刻就会显现出来。我的编辑器比机器本身带的编辑器速度要快。我可以在显示器上以极快的速度书写文字,我为此而感到骄傲。通常用这样的机器,在显示器上写满字需要很长的时间,你可以看到屏幕在慢慢地滚动。但是用我的编辑器在书写时速度非常之快,屏幕滚动能给人造成一种模糊的感觉,这让我很得意。这一点对我非常重要。它使我的机器显得性能惊人,而且我知道为了让我的操作更迅速,自己已做了大量的工作。

那时,在我所认识的人当中,像我那样沉迷于计算机的人微乎其微。学校里有一个电脑俱乐部,但我几乎不怎么去。那个俱乐部主要是为那些想了解电脑的孩子们创立的。我们的高中只有二进五十名学生,但我想他们在十岁以后就再没有一个人玩电脑了。

通常我用我的 Sinclair QL 电脑做的事情是复制游戏。我曾用 VIC-20 电脑为我喜欢的游戏作过翻版。有时我还让游戏升级。但多数情况下它们都得不到改进。机器更高级了,但概念并无改进。我最喜欢的游戏大概是“小行星”,但我怎么也不能很好地将其复制下来。原因是那个时期所有游戏机中心的“小行星”游戏都是用真正的矢量图形显示进行的。那些游戏的图形不是靠小粒 ( 即像素 ) 显示的,而实际与阴极射线管的原理相同:电子是从阴极射线管的后面通过电子枪发射出来,然后用磁铁进行转向,这样便可以高清晰度地显示图像,但如想复制过来就不那么容易了。你当然可以复制,但假如你的电脑没有特殊的图形显示能力,复制出来的东西便与原本的“小行星”相去甚远。

我记得曾经采用汇编语言对“穿靴人”做过翻版。第一个步骤是,你必须记住穿靴人里的人物是什么样子。然后你把它们画在一张 16*16 平方厘米的坐标纸上,再涂上颜色。你若有艺术细胞,就可以画得很逼真。然而若像我似的完全不懂艺术,画出来的人物就会像是穿靴人的生了病的小表弟。

所以这个复制做得并不理想。然而我却为此感到自豪。做出来的那个游戏是可以玩的,于是我把它寄给了一家发表电脑编码的杂志。我曾经把其他的程序寄给一些杂志,所以我以为我这次被他们接纳应是理所当然的事。

事实却恰恰相反。

其中的一个问题是,无论你在什么地方出现一个极为微小的错误,它就会运转不灵。我自己也写过一些游戏。然而创作需要某种心态。由于游戏需要大量的表演,就需要你对电脑的硬件十分精通。这我做得到。但我却不具备玩游戏的感觉。一个出色的游戏通常并不是它的速度有多快,也不是它的图形显示得多么漂亮。它必须能让你感到玩得起来 — 能吸引人。游戏和电影颇为相似。特殊效果是一回事,然而你还是需要情节。我所有的游戏从来都没有情节。游戏还需要有发展,有想法。发展常常就是让游戏速度越来越快。穿靴人就是这种模式。进展时也产生变化,或是让你能够更紧密地跟踪里面的怪物。

我对“穿靴人”感兴趣的另一个原因是,它能够解决图形显示闪烁不定的问题。这在老式的电脑游戏中是一个比较普遍的问题,因为没有特殊的硬件,你的人物就会闪烁不定。你采用的办法就是去掉老拷贝,重写一个新拷贝。假如你的时间恰巧处理得不好,人们就能看到没有拷贝时的状况,于是就更会出现闪烁的情况。解决这一难题有许多种方式。你可以先画一个新人物,然后再把以前的人物去掉来避免这一问题。但你必须小心谨慎,不要把老人物被新人物覆盖住的那部分也给去掉。这样你就能获得一个良好的效果,不会再看到烦人的闪烁现象。这一解决方案的问题是创作时相对昂贵,而且特别费时间。

游戏为何总是处于技术领先的地位,而且编制人员为什么总是先制作游戏程序,其中是有原因的。一方面是关在房间里玩电脑的聪明的程序编制人员都是十五岁左右的孩子 ( 我十五年前就这么认为,至今对此仍深信不疑 ) 。游戏之所以总处于领先地位还有另一个原因:它总能推动硬件的发展。

你若是看一下今天的电脑,就会发现它们速度快得可以做任何事情。但考验硬件极限的往往是动作感过强的游戏,如现在很流行的一些三维游戏。从根本上说,通过电脑上的游戏,你可以看出硬件是不是过关。进行文字处理时,速度慢上一二秒钟也不会在意,但玩游戏时,出现十分之一秒的误差也非常明显,游戏过去都比较简单,时至今日,编程只是任何游戏的一小部分,此外还有音乐和情节。假如你把制作游戏比做拍电影,编程者在一定程度上就等同于摄影师。

就这样,我使用了 Sinclair QL 电脑三年:从高中到赫尔辛基大学,再到芬兰部队服役。这个电脑不错,但我们肯定会分手。在最后的一两年里,我发现了它的短处。 68008 是个不错的 CPU ,但我在书上了解到了下一代的 68020 ,得知了诸如内存管理和分页等种种功能,在使用低档电脑进行工作时,这种新的电脑可以完成非常重要的任务。

Sinclair QL 令我讨厌的地方是,它的操作系统虽说能进行多重任务处理,但在任何时候都会出现死机,因为它没有保存措施。只要一个任务出现差错,就能让整个机子死机。 Sinclair QL 是克里夫 ? 辛克莱尔爵士最后一次设计和制造的电脑,原因之一是这种电脑在商业上并不成功。它的技术非常有意思,但公司却存在着生产问题和质量保证问题,而且最终宣传上也很失败。此外,市场竞争也开始变得越来越激烈。

到了八十年代末期,你便开始想象,或许有那么一天,大街上的每一个人都可能拥有一台电脑,哪怕只是进行简单的文字处理。而且种种迹象表明,发展方向是 PC 机。不错, IBM 最早制造的 PC 机尽管有许许多多的技术问题,但却开始摆满了商店的货架,销售得极为成功。 PC 机的另一个吸引人的地方是:外围设备非常标准,而且很容易就能搞到。

所有关于这种较新的 CPU 的文章我都阅读,它可以完成我想完成的任何任务。显而易见,看上去非常有意思的 68020 发展前景不佳。我完全可以为 QL 买一个升级的 CPU 。在那个年代,这便意味着重新组装一台机器。尽管如此,操作系统还是没有内内存管理,所以我不得不自己编写。于是我想:这将是很费力的一步,而且获得一个 CPU 过于昂贵。

此外,令我越发感到头疼的是:为电脑购买设备的问题依旧存在。 Sinclair QL 电脑的产品目录似乎根本就没有过,所以你不可能简单地抄起电话,像定购西尔斯百货商店的邮购商品那样定购内存设备。再说,通过邮局从英国订货的做法已经过时了。当时还没有用收缩封套包装的软件盘,这我倒不在乎,因为我都能自己编写。

这个头疼的问题却给我带来了一个好处。在我琢磨着把我的机器处理掉时,也决定把我的附加设备卖掉。我指的是我买的硬盘驱动器,因为要扩展内存,我一分钟也不能忍受了。当时没有人在大街上到处找这种东西,所以我只能在电脑杂志上登广告,然后就祈祷等待着。就这样,我认识了我的好朋友乔科 ? 维亚鲁马奇( Jouko Vierumaki )。在整个芬兰,他大概是第二个拥有 Sinclair QL 电脑的人。他对我的广告做出了回应,骑着自行车来到我家,买走了我的一些外围设备。后来,他也让我学着打斯诺克台球。

2 、上大学

我在上大学的第一年,住在彼得盖坦街,我的宿舍在一层,靠窗户的一张桌子上就摆着 Sinclair QL 电脑。但我没有编写多少程序,原因之一是我必须集中精力读书,原因之二是我也找不到什么项目去做。没有项目可做就会缺乏热情。你总是在寻找能够让你鼓起劲去做的事情。

当时似乎是参军的好时光,而且我也知道那是早晚的事。我当时十九岁,正因为自己的电脑毛病太多而心情沮丧。而且,当时也没有任何有意思的电脑项目,于是我就搭上了一辆开往拉普兰的火车。

前面我已经说过,关于军队在体力方面会对我们做出什么样的要求我是一无所知的。所以在那里手执武器上了一个月的“体育课”之后,我便觉得在我有生之年完全有资格从此一动不动,享受平静的生活了。惟一可做的事情就是把编码打入键盘,或者手里端着一瓶比尔森啤酒(说真的,在我复员整整十年后,才第一次参加一次剧烈的活动。当时大卫硬拉着我去冲浪。旧金山半月湾的强大海浪差点没把我淹死,我的腿一连酸了好几天)。

部队服役结束于 1990 年 5 月 7 日 。塔芙会告诉你,我连我们的结婚纪念日都记不住,但我却不大可能忘记我离开部队的日子。

刚一离开部队就想弄只猫。复员的几个星期前,我一个朋友的猫下了一窝崽,于是我把他剩下的唯一一只小猫买了下来。那是只白色的公猫,长得很漂亮。它生下来的头几个礼拜就在室外跑来跑去,所以在我妈妈公寓的室内和室外养活起来都很容易。我给它起了个名字,叫兰迪。它现在已经十岁了,和它的主人一样完全适应了加利福尼亚的生活方式。

那年整个夏天我没有干什么正事。我大学二年级的课程直到秋天才开始。我的电脑状态也很不佳。于是我就穿着一件破旧的睡衣,逗兰迪玩,偶尔和朋友们联欢会,让他们笑话我的保龄球和台球的拙劣技术。当然,我对我的下一部电脑也做了一些设想。

我面临的是一个电脑迷的困境。我同其他随着 68008 芯片一起长大的电脑迷一样,特别讨厌 PC 机。但在 1986 年 386 芯片出台后, PC 突然看上去有了魅力,凡是 68020 能做的事情它们都能做。到了 1990 年,大规模的生产使这种机器的价格急剧下跌。我对钱很在乎,因为我手拮据。于是我就希望拥有一台这样的电脑。正因为 PC 非常红火,升级材料和装置很容易就能弄到。在硬件方面,我特别希望有一台标准的机器。

我决定来个大跳跃,超越界限,而且弄一个新的 CPU 这事的确让人兴奋。于是我便开始把我的 Sinclair QL 的零件一点点地卖掉。

每个人都会一本改变其一生的书籍,比如《圣经》、《资本论》、《星期二和莫瑞在一起》、《我想知道我在幼儿园里学到的一切》等等(我真诚地希望,在你读过了本书序言和我的关于生命意义的理论之后,这本书也能对你产生影响)。把我推向生命高峰的是安德鲁 ? 塔南鲍姆( Andrew S. Tanenbaum )写的《操作系统:设计和实现》。

我已经选好我的秋季课程,其中最让我期待的是 C 程序语言和 UNIX 操作系统。在等待着上课期间,我还买了一本上面提到的教科书,希望能先读一下。在这本书中,住在阿姆斯特丹的大学教授安德鲁 ? 塔南鲍姆讨论了 MINIX ,那是他为 UNIX 撰写的教学辅助软件。 MINIX 也是 UNIX 的小型翻版。一旦读完了介绍,了解到 UNIX 背后的理念以及那个强大、利索、漂亮的操作系统所能做到的事情后,我便决定弄一台机器来操作 UNIX 。我将操作 MINIX ,那是我所能找到的惟一版本。

通过阅读和对 UNIX 的了解愈来愈深,我的热情高涨起来。

说实话,我的热情从来没有低落过(我希望你在做某件事时也能说出同样的话)。

3 、从 UNIX 开始

赫尔辛基大学第一次拥有 UNIX 是在 1990 年秋季开学的时候。

那个强大的操作系统是美国电话电报公司的贝尔实验室于六十年代发明的,然而它的开发却是在别的地方。前一年,也就是我上大学的第一年,我们有一台操作 VMS 的 VAX 。这个操作系统糟糕透顶,你决不会说出:“嘿,我在农时也想装一个 VAM ”这样的话,它只能让你说:“你怎么会使用这个破玩意?”它用起来极不方便,没有多少工具,也不适合轻松容易地进入因特网,而因特网是在 UNIX 上面操作的。你甚至都无法轻易地估算出文件到底有多大。坦白地说, VAM 可能很适合某些操作,比如数据库。但这种操作系统无法让你为之感到兴奋。

赫尔辛基大学当时意识到应该淘汰诸如 VMS 类的软件。学术界已经对 UNIX 产生了越来越大的兴趣,于是我所在的大学购买了一台操作 Ultrix 的微型 VAX , Ultrix 是 DEC 公司生产的一种 UNIX 版本。

我特别渴望操作 UNIX ,将我从安德鲁 ? 塔南鲍姆书上所学到的东西进行试验。要是我有一台 386 ,它肯定会对我能进行的一切探索感到兴奋不已。但是,我无法凑齐一万八千芬兰马克买一台 386 。我知道一旦秋季学期开始后,我就能使用我的 Sinclair QL 进入大学新的 UNIX 电脑,直到我自己凑齐了钱买一台 PC 机,再在上面操作 UNIX 。

因此,那年夏天我做了两件事。第一件是什么都没做。第二件事是读完了七百一十九页的《操作系统:设计和执行》。那本红色的简装本教科书差不多等于睡在了我的床上。

赫尔辛基大学为微型 VAX 电脑购买了十六个客户执照。这意味着“ C 语言和 UNIX ”课程的选修学生人数被控制在了三十二名 — 我想学校的想法是十六个学生白天使用机器,另外十六个学生晚上使用。教师和我们一样,对 UNIX 也不太熟悉。他对此公开承认,因此也没构成什么问题。但他每次都比学生先读一个章节。有时学生也会提前跳读三个章节,因而上课成了一种游戏,学生们问的问题都是在三个章节之后才能学到的,目的是为了难住教师,看他是否已经读了那么多。

我们在 UNIX 的大世界中都是婴儿,一边学习一边完善这门课程。然而关于这门课最明显的是,在 UNIX 背后有一个非常独特的理念。你在这门课的第一个小时就抓住了这一点,剩下来就是解释细节了。

UNIX 的独到之处在于它所追求的基本理想。它是一个干净利索、非常漂亮的操作系统。 UNIX 具有程序的观点,凡是做任何事情都是一个过程。这里有一个简单的例子。 shell command 是为进入操作系统而键入的一种指令,在 UNIX 中,它并不像在 DOS 中似的被装在操作系统里。它只是一个任务,同其他的任务相同。这个任务是从你的键盘中读出的,然后再写回到显示器。任何能做的事情的东西在 UNIX 里面都是一个程序,此外还有文件。

吸引我的就是这个简单的设计,它也吸引着大多数对 UNIX 感兴趣的人(至少对我们电脑迷们颇有吸引力)。你在 UNIX 上完成的大部分任务都是通过六个基本操作完成的,它们被称作“系统呼叫”( system call ),因为它们是你对操作系统的呼叫,你便让它为你完成任务。通过这六个基本的系统呼叫,任何事情你都可以完成。

此外还有“创建子进程”( fork )的概念,它是 UNIX 的基本操作之一。当一个程序创建子进程时,它便把自身完全复制出来。这样你就有了两个相同的拷贝。复制拷贝多数情况下再去执行另一个程序 — 用一个新项目替换自己。这便是第二个基本操作。其他四个基本系统呼叫 — 打开、关闭、读和写 — 都是为了访问文件的。这六个系统呼叫便组成了 UNIX 的简单操作。 当然,从细节方面讲,还有数不清的其他系统呼叫。然而一旦你明白了这六个基本系统呼叫,你就了 UNIX 。 UNIX 的好处之一是,你并不需要拥有复杂的连接去创立复杂的事物。你可以通过简单事情的互动来建立任何程度的复杂任务。你只需在简单的程序之间创造出交流渠道,在 UNIX 中叫做“管道”( pipes ),就能解决复杂的问题。

一个差劲的系统在做任何你想做的事情时都需要有特殊的连接。 UNIX 则恰相反。它提供给你执行任务的材料,这些材料足以让你完成任何事情。这就是所谓的干净利索的设计。

语言其实也是如此。英语有二十六个字母,你可以用这些字母创造出任何单字。另一种语言是汉语。在汉语中,你所想到的任何一件事都由一个字来代替。你一开始用的就是复杂的形态,然后在有限的方式中将复杂的形态组合起来。 VMS 的大体上也是这种思路, Windows 的方法也是如此。而 UNIX 的理念是越小越漂亮。一小堆简单基本的建筑材料,结合起来就能创造出无限的复杂表述。

物理的规则亦是如此。你努力找出基本的规则,而这些规则都是相对简单的。从那些简单的规则中,通过相互作用产生令人不可思议的复杂性。

那种简单的设计并非是自然产生的。 UNIX 是美国电报电话公司贝尔实验室的丹尼斯 ? 里奇( Dennis Richie )和肯 ? 汤普森( Ken Thompson )花了很大力气设计完成的。你也不能认为简单就是容易。简单需要特别的设计和很高的品味。

让我们再回到人类语言的例子上。像图画似的中国象形文字是最先产生的,然后再追求“简化”。而建筑材料似的做法则需要更多的抽象思维。同样,你不能将 UNIX 的简洁同上不了档次混淆起来 — 事情正好相反。

但这并不是说,创造 UNIX 的最初原因有多么复杂。它和计算机的许多其他事情一样,都是以游戏开始的。最初有人想在等离子显示器上玩电脑游戏,那就是 UNIX 发展起来的原因。正因为当时人们觉得这个操作系统不是一个严肃的项目,美国电话电报公司才认为它并非是商业上的冒险尝试。事实上,美国电话电报公司的垄断受到制约,对其限制之一是不能推销电子计算机。所以创造 UNIX 的人有很大的,尤其在为大学服务方面没遇到什么阻碍。

于是乎, UNIX 在学术界就演变成了一个大项目。到 1984 年美国电报电话公司分家后,它已被允许进入电脑业,那时大学里的计算机专家们 — 尤其是加州大学伯克利分校的专家们 — 已经在比尔 ? 乔( Bill Joy )和马歇尔 ? 克拉克 ? 迈克库塞克( Marshall Kirk McKusid )的指导下,把开发和改进 UNIX 的工作进行了许多年了。

但到了 1996 年初, UNIX 已经成为所有超级计算机和服务器的头号操作系统。它的市场非常大。但当时的问题之一是,已经出现了数不清的操作系统的竞争版本。有一些是从控制得比较严密的美国电报电话公司代码库里创造出来的(即所谓的“ V 系统”),另一些人则是从加州大学伯克利分校的代码库衍生而来(即 BSD— 伯克利软件分布),还有的则是这两者的结合体。

其中一个 BSD 的衍生版本特别值得一提。那是 386BSD 项目,是比尔 ? 乔利兹( Bill Jolitz )在代码库的基础上做成的,分布在因特网上。后来它又进一步分裂,成为人人都可以获得的 BSD—Net BSD , Free BSD 和 Open BSD ,在使用 UNIX 的群体中引起广泛的注意。

于是美国电报电话公司突然觉醒了,将加州大学伯克利分校告上了法庭。最初的代码是电报电话公司的,但绝大多数后期工作都是在伯克利完成的。加州大学的校务委员们声称他们有权传播和销售他们的 UNIX 版本,而且还可收取象征性的费用。而且他们还向人证明,他们已为此做了大量工作,基本上把电报电话公司的软件进行了重写。官司的结果是, Novell 公司从电话电报公司买断了 UNIX ,一部分体系不得不从电报电话公司中分离出去。

同时,那场无休止的官司却让一个儿童赢得了一些时间,使自己成熟和发展起来。具体地说, Linux 获得了时间去占领市场。我自己走在了我的前面。

坦白地讲,在使用 UNIX 的人当中,有许多是几乎发疯的人。他们不是集邮疯子,不是把邻居的狗毒死的疯子,而是一些生活方式很另类的人。

别忘了, UNIX 最初的主要发展是在六十年代和七十年代,我当时正在祖父公寓里的一个洗衣筐子里睡觉。当时正是美国嬉皮士的时代,而那些人也都懂技术。有关 UNIX 应共享的理念和当时的社会环境有关,而并不应简单地归功于其开放源代码的系统本身。那是一个了各种理想的时代。革命、解放、自由爱情(自由爱情我可没赶上,即使赶上也不知该怎么做)……于是 UNIX 的相对开放性对这类人就特别有吸引力,尽管在当时它还缺乏商业上的价值。

我第一次了解到 UNIX 可开发性的一面大概是 1991 年前后,当时拉尔斯 ? 沃兹尼亚斯( Lars Wizenius )拉着我去赫尔辛基理工大学参加一个集会。人人都知道,这所大学根本不在赫尔辛基,而是在城市边界线以外的艾斯普。学校的人想和豪华的赫尔辛基联系起来,哪怕只是在名义上。

当时的演讲者是理查德 ? 斯多曼( Richard Stallman )。此人是自由软件的鼓吹者。

1983 年,他开始研究 UNIX 的一个替代物,将其称作 GNU 系统,其含义是“ GUN 不是 UNIX ”( GNU 是“ GNU is Not UNIX ”的字首缩略语 — 译注)。这些只有在电脑界内部开的玩笑,常人是很难听懂的。电脑迷之间流传的文学游戏实在是数都数不清。

更重要的是, RMS (理查德 ? 斯多曼希望别人这样称呼他)还撰写了《自由软件宣言》和自由软件产权证书,即 GPL 。他首先提出的关于开放源代码的概念完全是有意的,而并非出于偶然,和 UNIX 最初的开放发展理念是相吻合的。

我得承认,我对社会政治方面的问题了解得不多,而这些问题过去和现在对 RMS 都非常重要。我对他所创立的开放软件基金会的宗旨也知之甚少。事实是,我对 1991 年人们谈论的话题也没有多少记忆,这说明当时它对我的生活并没有产生多大的影响。我当时所关心的是技术,而不是政治 — 我们家里的政治已经够多的了。但拉尔斯是个思想理论家,于是我便跟在他身后去听听。

我在生活中第一次见到了典型的留着长发、蓄着长胡子的黑客形象,其代表就是理查德。这样的人在赫尔辛基为数不多。

我当时可能没有看到眼前的光芒,但我猜他说的一些话也多少给了我一些锾。毕竟,我后来为 Linux 使用的就是 GPL 。就这样,我再一次走在了自己的前面。

4 、第一台 386 和终端仿真

1991 年 1 月 2 日 。

在我的日历上,圣诞节和我的二十一岁生日是两个最重要的能让我得到金钱的日子,而这一天是这两个日子之后商店开门的第一天。

我手里攥着在圣诞节和生日得到的钱,做出了一个重大的财政决定:准备买一台价格一万八千芬兰马克的计算机。这差不多等于三千五百美元。我没有这么多钱,所以打算首付三分之一,剩下的用赊账方式来付。其实那种电脑的价格是一万五千芬兰马克,其余的三千马克税款可在三年之内付清。

我去的是一家小店,也就是那种夫妻店,只是我去的这家只有丈夫,没有妻子。我对生产厂商不太在乎,所以决定买一台杂牌的,装在一个白色大箱子里的电脑。老板把一张价格表递给你,上面有你想要的 CPU 、价格以及硬盘的大小。我想要大功率的。我希望内存是 4 兆,而不是 2 兆。我希望我的 CPU 是 33 兆赫的,当然,要是 16 兆赫也能凑合。不,我要买就买最好的。

我把自己希望的规格告诉他们,他们就给你组装好。如今在因特网和快递的年代,这听起来似乎很怪。三天以后你去提货,但那三天就像过了一个礼拜。 1 月 5 日 ,我让爸爸开车帮我把新电脑运回了家。

这台电脑不仅是杂牌,而且其貌不扬。它的颜色灰蒙蒙的。我买这台电脑并不是因为它看上去很酷。它的样子极不好看,有一个 14 英寸的显示器,是我所看到的价格最便宜也最笨重的机器。我用“笨重”这个词,意思是说很少有人拥有这么大功率的电脑。我不想将其描绘成样子难看、但功能齐全的电脑 — 就像是一辆沃尔沃轿车。但事实是,我希望这台电脑靠得住,而且最终我需要升级时,它也能轻易地做到这一点。

这台电脑有一个 DOS 操作系统。我想使用 UNIX 的变体 MINIX ,所以我订了货,然而这个操作系统需要等一个多月的时间才能到达芬兰。当然,你也可以在一家电脑商店买一本关于 MINIX 的书,但人们对这种操作系统的需求非常之少,所以你必须事先向书店订购。操作系统的价格是一百六十九美元,再加上税,还有别的什么费用。当时我觉得这简直太不可思议了。坦白地说,我今天仍旧这样认为。当时那一个月让我觉得就像度过了六年。在我等待买我的 PC 机时,也没有经受过那样大的烦躁不安。

当时正值隆冬。你若从寝室里出来,就可能会遇到被老太太们撞倒在雪地上的危险。这些老太太们实在应该呆在家里为她们的家人煮煮白菜汤,或一边织毛衣一边在电视上看冰球,而不是应该出来趔趔趄趄地瞎溜达。

那个月里,我基本上是在用新电脑玩“普鲁士王子”游戏。不玩时就看书,以便弄明白我买的电脑的功能。 MINIX 软件终于在一个星期五的下午到了,当天晚上我便将其装了上去。你得用十六张软盘才能把这个软件装入计算机。然后整个周末就都花在了熟悉这个新系统上。我学会了这个操作系统的好的一面,但更重要的是,也了解到了我不喜欢的一面。我从大学的电脑上把我熟悉的程序下载下来,来弥补它的不足之处。总之,我用了将近一个月左右的时间,才使这个系统完全变成了我自己需要的系统。

住在阿姆斯特丹的、撰写 MINIX 的安德鲁 ? 塔南鲍姆想把这个操作系统作为教学工具,于是在一些不利的方面它都被故意损坏了。 MINIX 也得到了一些改进,最出名的一个改进是一个叫布鲁斯 ? 伊文斯( Bruce Evans )的澳大利亚人进行的,他使用的是 MINIX386 。他的改进使 MINIX 在 386 上运行起来更方便。在我购买这台电脑之前,我就一直在网上跟踪 MINIX 的消息,所以从一开始我就想使用它的升级版。但是,你不得不买 MINIX 的正版,然后再做大量的工作,引入伊文斯的改进 — 这是工作的主要任务之一。

目录
设置
设置
阅读主题
字体风格
雅黑 宋体 楷书 卡通
字体大小
适中 偏大 超大
保存设置
恢复默认
手机
手机阅读
扫码获取链接,使用浏览器打开
书架同步,随时随地,手机阅读
首 页 < 上一章 章节列表 下一章 > 尾 页