车仆于是开始筋疲力尽。他不仅需要留意每一个车位的状态,而且必须迅速无误地代泊每一辆车,并在客人离开的时候,准确地找到它们。既然停车位占用的是物理空间,那它肯定能扩张:增加车位成本很高,但是它能缓解停车场的阻塞。而更好的解决办法是,车仆必须更聪明更敏捷地工作。当车位已满,车仆必须在入口等待车位空出来。优秀的车仆能够指挥这些车辆,所以当停车场暂时不能运作的时候,没有人会引起争吵。而无能的车仆却常常不能很好地管理未停放的车辆,所以场地充满着混乱。然后,每个客人都得离开他或她的饭局,找到他或她的车,重新再停一次车。
车仆的工作形象地显示,稍不注意,局面就失去把握。皮亚佐利想创造出一个聪明绝顶的车仆,但他坚持用陈旧的方式。
对可靠性的要求极大地影响了操作系统的整体设计。什么是隔离应用程序的最佳方式呢?这样当应用程序出现故障时会不会使NT也失败?卡特勒的解决方案是把操作系统分成两个主要的部分。其中一个是"内核",它不直接和应用程序关联,所以不会被它们影响。另一个是操作系统的图形化的、可视的部分。
我们回到楼上-楼下的比喻来领悟一个系统内核的要领。想象一下家政服务团的管家,他是多么地勤劳:他24小时不分昼夜地为楼上的家庭服务,随叫随到,处理各种要求。如果需要做顿饭,他就去做;如果需要洗衣服,他就去洗。如果他不在,他也会安排好一个候补。他把房子里的一切维持得井然有序。楼上成员的任何意外的行为都不会使楼下的生活休止--从不。
这就是卡特勒想要的操作系统的大致情形。就像楼上的家庭,应用程序可能会有意外的或不合理的行为。在程序的范畴里,当所有其他程序都运行失败的时候,唯一能保持运行的就是系统内核。它通过给应用程序强加一定的限制来保护它自己,最重要的是,只有它,而不可能是应用程序,来操控硬件。
系统内核本身的结构就很复杂,包括很多组件,组件之间互相调用,或者直接调用硬件关联。系统核心的组件常常调用底层代码--"微核",它是NT里的终极统领。卡特勒曾在DEC写过一个微核,打算也为NT写一个。这看起来极像他在团队中的地位,微核在操作系统里也颇具权威。
内核设计有两个主要的优点。第一,当一个程序突然停止的时候,内核允许用户保持其他的应用程序的正常运行,还可以启动新的应用程序,从而保证了系统的可靠性。第二,内核可以使操作系统显示出多样的个性。每个操作系统的个性都通过调用内核来向计算机发出命令。OS/2将会是这些个性之一,这是盖茨的要求。但是NT也要能支持其他个性,成为一个潜在的通用的软件平台。
卡特勒内核设计的令人眩目的优点--可靠性和多样的个性--可这是有代价的:速度,或者说缺乏速度。这里有严格的逻辑性。把一种个性加入模块里,意味着系统发出的调用命令的数量起码翻了一倍。比如说,一个应用程序必须先调用OS/2模块,然后OS/2调用内核。用卡特勒的话来说,个性变成了内核的"客户",内核为客户"服务"。
当盖茨第一次听到这种客户服务模式时,他犹疑了,想到:"这样做的话,会有巨大的额外开销。"他对此有充分的证据。"我的头脑里清楚地知道这个额外开销有多大,所以我认为我们不能这样去做。"他坚持。但是卡特勒有力地为客户服务模式辩护,说它不会降低性能。他提供了数学数据来支持他的模型,他部落里的一个成员还写了一篇十二页的论文来说明其他设计方案是不可行的。
在如此激辩之后,盖茨对NT的基本设计还是不放心。他比卡特勒更了解消费者对程序运行速度的关注。他们会把NT和DOS、OS/2比较,而后两者是用汇编语言写成的,可更好地发挥硬件的性能。固然,微芯片总有一天会变得很快,可以抵消NT的缓慢。但是让软件任意遨游的超快芯片的到来还得等5年到10年。盖茨担心舆论早把NT钉死在速度的十字架上。
本文摘自《微软创建NT和未来的夺命狂奔》
比尔盖茨和他的微软公司之所以能够取得巨大的成功,最重要的原因就是他们能够展望未来。微软既不满足于在应用软件方面不错的市场份额,也不满足于在关键的操作系统业务上依靠DOS和Windows获得的显著优势,他们一直在展望未来。而现在微软的未来被称为Windows NT。作为最先进的软件创新,NT也许会在全世界直到下个世纪的范围内重新定义计算的标准。NT赋予廉价的个人计算机的能力堪比庞大的大型机而且并没有牺牲其内在的灵活性和个人计算机的优点。