《观止》

下载本书

添加书签

观止- 第8部分


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!

  究竟什么是操作系统?卡特勒的团队想创造出什么呢?
  我们来描绘一下20世纪初一个富裕的英国家庭。把电脑硬件想象成一座大房子,这个家庭的住所。房子里有管道、照明、砖、灰浆墙、窗户和门——所有实体的物件应有尽有。
  接下来,想象一下计算机软件就是生活在房子里的人。家政人员住楼下,他们提供全套及时的家政服务。管家立在门边,司机在洗车,保姆在熨着衬衫,厨师提供一日三餐并烤着面包,园艺师在草坪上扫落叶。所有活动,看起来都像是分别在按照自己的进度进行,但实际上全部都由管家来协调和组织。这就是楼下居民的生活,在某种意义上,它是存在于背景中的。

第3章 部落(7)
接着考虑一下楼上的人。他们是楼下人辛苦劳作的全部理由。丈夫需要一个司机,不仅是为了省心,更是因为他想要外出旅行。妻子请来一个厨师,这样她的家人就可以吃得很好。孩子们从园艺师的工作中受益,他清除院子里的碎石片,让孩子们在室外可以安全地嬉戏。
  对楼上家庭和楼下忠诚的仆人的生活的描述清晰地说明了软件世界里的重要分工。楼上的居民是应用软件:文字处理、电子表格、数据库、电子排版和大量其他能满足人们需要和愿望的程序。而楼下的居民则共同发挥了操作系统的功能:他们是服务的领域,有些是自动的,有些则有特殊请求的。这些服务是提供优越生活物质条件的基础。
  卡特勒对他的操作系统有三个期望:
  可移植性:这可是软件业的圣杯——创造出一个可以适合每一种硬件的操作系统。当时,每种商业操作系统都是为特定系列的芯片而量身定做的,所以只能在装载这些芯片的电脑里发挥作用。程序员用最接近于目标硬件的汇编语言写了大量的编码。将软件和硬件联系在一起。当硬件成本远大于软件成本时,没有人介意这些。不过,后来当消费者发现在应用程序上的投资大过于购买硬件时,他们就不愿意抛弃他们已安装的但已过时的应用软件。NT便是创造一个通用系统的机会,它将在电脑世界开创一个新纪元。
  可靠性:在苹果机上应用的是OS/2和DOS操作系统,一个应用程序的运行失败往往会导致整个系统停止工作或崩溃,数据消失,迫使使用者重新启动机器。如果许多应用程序在同一时间运行——NT的未来特色之一——其中一个的运行失败会导致其他应用程序的停止运行。卡特勒想用“防弹”系统来结束这种不必要的崩溃。有了“防弹”系统,个人电脑的价值会增大,因为它们能可靠地支持在商业世界中所谓“关键任务”的服务,比如航空订票或者银行自动柜员机。卡特勒和他的团队知道如何来保证可靠性,他们的DEC操作系统是在电脑还是十分昂贵和稀有的时代诞生出来的,卡特勒解释说:“如果系统死了一个小时,那就糟糕透了。首先,当时你不能像现在那样,对一台电脑做那么多操作,所以每一分钟都损失惨重。”
  个性化:NT应该灵活十足,它将拥有不止一种用户界面,或“个性”。当时的个人电脑操作系统往往只有一种个性,也就是说,为DOS写的应用程序就只能运行在DOS上。NT将会支持OS/2的表示层管理器界面,但它也会设计成可以——如果微软选择这么做——支持其他诸如DOS或Windows或还没发明出来的操作系统的个性。
  在构思NT的时候,卡特勒及其部落们首先攻克可移植性的难题。
  可移植性的代码比较容易编写但效率比较低。理论上,用高级语言写出来的代码在经过编译后,可以在不同的微处理器上运行,而高等级的语言写出来的程序相对较慢,所占空间也大。微软的DOS、DEC的VMS和苹果的麦金塔操作系统,用的都是汇编语言,因为它写出来的程序小而紧凑,充分地发挥了特定硬件的作用。紧凑的编码固然是好的,因为它节约了内存的空间。内存空间包含了很多芯片,名叫DRAM(动态随机存取存储器),就好比一个汽油箱。汽油箱越大,汽车就跑得越远。操作系统越小,就有更多的油留给其他程序使用。txt电子书分享平台 

第3章 部落(8)
因为NT是可移植的,所以卡特勒知道它会很大。问题是,它将有多大?这取决于他的程序员们有多聪明,以及NT自己的设计特色和功能。卡特勒需要花很多时间才能知道NT究竟需要多大一个内存油箱。可是,他已经意识到NT会消耗很多内存——也许比现有的个人电脑操作系统所需的要多得多。
  这让比尔?盖茨感到紧张。NT最少需要一个带有8兆内存的电脑,这是当时一台新电脑标准配置的8倍以上。盖茨担心消费者会不用NT,因为它意味着消费者需要为它再花几百美元购买额外的内存。虽然内存芯片的价格可能会大幅度下降,但NT的内存要求仍然是非常不确定的。
  这个任务落到了皮亚佐利头上,他来负责设计和编写NT中管理内存的代码(他在卡特勒的实验室里曾写过类似的内存管理程序)。内存管理要确保操作系统的每个部分和每个运行的应用程序在它们需要时都能有足够的内存空间,所以它自己要一直保持运行状态。这是个复杂的任务,因为,当一个应用程序需要内存而当时没有时,就需要内存管理程序来精确地搜寻出可用的内存空间。而且“每个人都需要内存,而且想马上得到”,使这项任务显得更加艰巨。
  为了更好地理解内存管理程序的作用,我们来想象五个饭店,它们共用一个停车场,但是车位有限,假设只有100个车位。想在这五个饭店的任何一家吃饭,在这个停车场里停车是唯一可行之路。一个孤单的车仆负责车进车出,和代泊每一辆车。饭店象征应用程序,停车场象征电脑的内存,车仆则代表操作系统里的内存管理程序。早上,只有一家饭店营业,所以有足够的闲置车位,车仆的管理工作也很轻松。午饭时间则显得压力重重,因为五个饭店都在营业,对车位的要求很紧张。
  车仆于是开始筋疲力尽。他不仅需要留意每一个车位的状态,而且必须迅速无误地代泊每一辆车,并在客人离开的时候,准确地找到它们。既然停车位占用的是物理空间,那它肯定能扩张:增加车位成本很高,但是它能缓解停车场的阻塞。而更好的解决办法是,车仆必须更聪明更敏捷地工作。当车位已满,车仆必须在入口等待车位空出来。优秀的车仆能够指挥这些车辆,所以当停车场暂时不能运作的时候,没有人会引起争吵。而无能的车仆却常常不能很好地管理未停放的车辆,所以场地充满着混乱。然后,每个客人都得离开他或她的饭局,找到他或她的车,重新再停一次车。
  车仆的工作形象地显示,稍不注意,局面就失去把握。皮亚佐利想创造出一个聪明绝顶的车仆,但他坚持用陈旧的方式。
  对可靠性的要求极大地影响了操作系统的整体设计。什么是隔离应用程序的最佳方式呢?这样当应用程序出现故障时会不会使NT也失败?卡特勒的解决方案是把操作系统分成两个主要的部分。其中一个是“内核”,它不直接和应用程序关联,所以不会被它们影响。另一个是操作系统的图形化的、可视的部分。
  我们回到楼上—楼下的比喻来领悟一个系统内核的要领。想象一下家政服务团的管家,他是多么地勤劳:他24小时不分昼夜地为楼上的家庭服务,随叫随到,处理各种要求。如果需要做顿饭,他就去做;如果需要洗衣服,他就去洗。如果他不在,他也会安排好一个候补。他把房子里的一切维持得井然有序。楼上成员的任何意外的行为都不会使楼下的生活休止——从不。书 包 网 txt小说上传分享

第3章 部落(9)
这就是卡特勒想要的操作系统的大致情形。就像楼上的家庭,应用程序可能会有意外的或不合理的行为。在程序的范畴里,当所有其他程序都运行失败的时候,唯一能保持运行的就是系统内核。它通过给应用程序强加一定的限制来保护它自己,最重要的是,只有它,而不可能是应用程序,来操控硬件。
  系统内核本身的结构就很复杂,包括很多组件,组件之间互相调用,或者直接调用硬件关联。系统核心的组件常常调用底层代码——“微核”,它是NT里的终极统领。卡特勒曾在DEC写过一个微核,打算也为NT写一个。这看起来极像他在团队中的地位,微核在操作系统里也颇具权威。
  内核设计有两个主要的优点。第一,当一个程序突然停止的时候,内核允许用户保持其他的应用程序的正常运行;还可以启动新的应用程序;从而保证了系统的可靠性。第二,内核可以使操作系统显示出多样的个性。每个操作系统的个性都通过调用内核来向计算机发出命令。OS/2将会是这些个性之一,这是盖茨的要求。但是NT也要能支持其他个性,成为一个潜在的通用的软件平台。
  卡特勒内核设计的令人眩目的优点——可靠性和多样的个性——可这是有代价的:速度,或者说缺乏速度。这里有严格的逻辑性。把一种个性加入模块里,意味着系统发出的调用命令的数量起码翻了一倍。比如说,一个应用程序必须先调用OS/2模块,然后OS/2调用内核。用卡特勒的话来说,个性变成了内核的“客户”,内核为客户“服务”。
  当盖茨第一次听到这种客户服务模式时,他犹疑了,想到:“这样做的话,会有巨大的额外开销。”他对此有充分的证据。“我的头脑里清楚地知道这个额外开销有多大,所以我认为我们不能这样去做。”他坚持。但是卡特勒有力地为客户服务模式辩护,说它不会降低性能。他提供了数学数据来支持他的模型,他部落里的一个成员还写了一篇十二页的论文来说明其他设计方案是不可行的。
  在如此激辩之后,盖茨对NT的基本设计还是不放心。他比卡特勒更了解消费者对程序运行速度的关注。他们会把NT和DOS、OS/2比较,而后两者是用汇编语言写成的,可更好地发挥硬件的性能。固然,微芯片总有一天会变得很快,可以抵消NT的缓慢。但是让软件任意遨游的超快芯片的到来还得等5年到10年。盖茨担心舆论早把NT钉死在速度的十字架上。
  卡特勒坚持他的立场。他不耐烦地发誓说他的团队会写出有魔力的代码,他们高超的编程技巧会弥补客户服务模式的不足。盖茨将信将疑,但也默许他们这么去做,他想:“嘿,这是他们的项目,是他们的项目。他们认为那样可以。”
  在1989年初时,NT的设计蓝图初具雏形,这时卡特勒开始恢复他的本性,不再像刚到微软时那么彬彬有礼了。他总是没有耐心,传达的信息也总是生硬而简洁明了。他不喜欢重复自己说过的话。“如果他给你解释过一次,他希望你再也不要去问他了。”一个团队成员说。卡特勒要求别人要紧跟他的节奏。当有人请他重新做一次解释时,他也会去做,“只是这一次声音有点响亮”,一位在那年夏天加入卡特勒团队的微软人如此说。“然后,如果你再请求他进一步阐明他的意思,这时,他的脸开始变红了。就好像,因为你不明白他的话,他就要发疯。所以我学着对他所说的每一句话都听得很仔细,有时候我也不懂装懂。然后我回到办公室,再思考他所说的话,或者我去问皮亚佐利,‘戴夫到底是什么意思呢?’” 电子书 分享网站

第3章 部落(10)
卡特勒从来不为他的缺乏耐性或火暴脾气抱歉。“我靠压力生存。”他自吹。他把他的团队看作是建立在分享共同的欢乐、牺牲和秘密的一个小社会。他既是严格的执政人,又是体贴的族长。他对自己的要求永远都比别人的多。在我们现在的社会,借口是换取宽容的通行货币,但卡特勒从不接受。“我希望每个人都做到他们自己的最好——一直如此。”他说。
  对他的亲密战友来说,卡特勒就像自然之力,但随着时间的过去,他脾气的爆发成了日常例行公事。和卡特勒不熟的人常常被警告要保护好他们自己。“当你看到卡特勒要发作的时候,赶紧躲掉。”卡特勒的一位朋友对一位微软人说。后者一开始觉得这个建议未免太夸张了些,可是后来她听到卡特勒办公室方向传来恐怖的吼声,她问:“这是什么噪音?”这就是卡特勒发脾气的声音。
  卡特勒的脾气可谓是一触即发,但有时他的咆哮只是故意做样子。“我向人们大吼大叫时,并没有发疯。”他说,“他们可能认为我疯了,可是我真的没有疯。”不过,要分辨出到底是不是装样子,谁也说不准。当卡特勒开始讥笑微软为“这个渣滓公司”时,很多人都觉得这是他的真实意思。
  麦沃尔德想缓和一下紧张的气氛。他邀请了公司里称为“架构师”的优秀软件工程师们,去会见卡特勒等人。可是事与愿违,原因出现在戈登?莱特温(GordOn Letuin)身上,他是设计OS/2架构的*。卡特勒曾被要求主持改进OS/2项目,对此莱特温觉得自己受到了冷落。他还觉得麦沃尔德和卡特勒都对RISC芯片的前景和可移植程序的期望值过高。当他和卡特勒团队对话的时候,莱特温显得盛气凌人。这让卡特勒感到不愉快,他本来就不喜欢OS/2的“不值一文的设计”,他认为OS/2能力不足,可靠性也不强,根本就不能承载更多的功能。在测试OS/2之后,卡特勒感到“心口疼痛”,因为他已承诺,NT将可以运行OS/2的程序。“这样,我们在努力制造最先进的艺术品(可移植系统),还要让它和垃圾OS/2兼容。”他说。
  莱特温觉得卡特勒不能理解微软为了赢得IBM而所做的妥协——卡特勒不会去做的妥协,因为IBM对NT的发展不提供任何帮助。莱特温发现设计OS/2的时候,好的点子不是被摒弃,就是处于无休止的争论中。他对卡特勒的自负也感到很愤怒,他认为卡特勒把自己看作是普罗米修斯,“从众神那儿带来火,以此来照亮(微软的)可怜的众生。但我们的确没这么想过”。
  在1989年3月9日,阿丽塔?卡特勒打电话告诉儿子,他77岁的老父亲不幸因心脏病去世。卡特勒似乎无动于衷,不过他母亲也没吃惊。儿子与他父亲之间有鸿沟,她说:“他对此一点感情都没有。”然而不少人怀疑尼尔对儿子的冷淡是卡特勒保持愤怒的“源头”。不管他和他部落中的程序员们有多么亲密的关系,也不论他通过他的成就获得了多么大的财富,生气这两个字总是与他如影随形。它紧紧地陪伴着他,就像是执拗而熟悉的朋友。当他在令人沮丧的时刻发脾气的时候,他的行为就仿佛是青年时期被压抑的卡特勒的反抗,那时他父亲对他所取得的成就毫无感觉。就如卡特勒高中时期的一位足球教练,拉里?车切斯所说:“戴夫年轻时,缺少的是一位可以鼓励他的父亲,对他说:戴夫,你做得很好。放松点。”书 包 网 txt小说上传分享

第3章 部落(11)
尼尔?卡特勒望子成龙,希望儿子能通过竞争或竞赛赢得尊重和别人的倾慕。“不管戴夫做什么,他都得证明他做得比别人好。” 车切斯回忆道。他连最休闲的娱乐也不放过,也要拼命力争上游。“如果你有位父亲说你已经做得很好,你就不用一直去证明它了,但是戴夫不停地证明给他父亲看。”
  对于父亲的去世,卡特勒几乎无话可说
小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架