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