对楼上家庭和楼下忠诚的仆人的生活的描述清晰地说明了软件世界里的重要分工。楼上的居民是应用软件:文字处理、电子表格、数据库、电子排版和大量其他能满足人们需要和愿望的程序。而楼下的居民则共同发挥了操作系统的功能:他们是服务的领域,有些是自动的,有些则有特殊请求的。这些服务是提供优越生活物质条件的基础。
卡特勒对他的操作系统有三个期望:
可移植性:这可是软件业的圣杯--创造出一个可以适合每一种硬件的操作系统。当时,每种商业操作系统都是为特定系列的芯片而量身定做的,所以只能在装载这些芯片的电脑里发挥作用。程序员用最接近于目标硬件的汇编语言写了大量的编码。将软件和硬件联系在一起。当硬件成本远大于软件成本时,没有人介意这些。不过,后来当消费者发现在应用程序上的投资大过于购买硬件时,他们就不愿意抛弃他们已安装的但已过时的应用软件。NT便是创造一个通用系统的机会,它将在电脑世界开创一个新纪元。
可靠性:在苹果机上应用的是OS/2和DOS操作系统,一个应用程序的运行失败往往会导致整个系统停止工作或崩溃,数据消失,迫使使用者重新启动机器。如果许多应用程序在同一时间运行--NT的未来特色之一--其中一个的运行失败会导致其他应用程序的停止运行。卡特勒想用"防弹"系统来结束这种不必要的崩溃。有了"防弹"系统,个人电脑的价值会增大,因为它们能可靠地支持在商业世界中所谓"关键任务"的服务,比如航空订票或者银行自动柜员机。卡特勒和他的团队知道如何来保证可靠性,他们的DEC操作系统是在电脑还是十分昂贵和稀有的时代诞生出来的,卡特勒解释说:"如果系统死了一个小时,那就糟糕透了。首先,当时你不能像现在那样,对一台电脑做那么多操作,所以每一分钟都损失惨重。"
个性化:NT应该灵活十足,它将拥有不止一种用户界面,或"个性"。当时的个人电脑操作系统往往只有一种个性,也就是说,为DOS写的应用程序就只能运行在DOS上。NT将会支持OS/2的表示层管理器界面,但它也会设计成可以--如果微软选择这么做--支持其他诸如DOS或Windows或还没发明出来的操作系统的个性。
在构思NT的时候,卡特勒及其部落们首先攻克可移植性的难题。
可移植性的代码比较容易编写但效率比较低。理论上,用高级语言写出来的代码在经过编译后,可以在不同的微处理器上运行,而高等级的语言写出来的程序相对较慢,所占空间也大。微软的DOS、DEC的VMS和苹果的麦金塔操作系统,用的都是汇编语言,因为它写出来的程序小而紧凑,充分地发挥了特定硬件的作用。紧凑的编码固然是好的,因为它节约了内存的空间。内存空间包含了很多芯片,名叫DRAM(动态随机存取存储器),就好比一个汽油箱。汽油箱越大,汽车就跑得越远。操作系统越小,就有更多的油留给其他程序使用。
因为NT是可移植的,所以卡特勒知道它会很大。问题是,它将有多大?这取决于他的程序员们有多聪明,以及NT自己的设计特色和功能。卡特勒需要花很多时间才能知道NT究竟需要多大一个内存油箱。可是,他已经意识到NT会消耗很多内存--也许比现有的个人电脑操作系统所需的要多得多。
这让比尔盖茨感到紧张。NT最少需要一个带有8兆内存的电脑,这是当时一台新电脑标准配置的8倍以上。盖茨担心消费者会不用NT,因为它意味着消费者需要为它再花几百美元购买额外的内存。虽然内存芯片的价格可能会大幅度下降,但NT的内存要求仍然是非常不确定的。
这个任务落到了皮亚佐利头上,他来负责设计和编写NT中管理内存的代码(他在卡特勒的实验室里曾写过类似的内存管理程序)。内存管理要确保操作系统的每个部分和每个运行的应用程序在它们需要时都能有足够的内存空间,所以它自己要一直保持运行状态。这是个复杂的任务,因为,当一个应用程序需要内存而当时没有时,就需要内存管理程序来精确地搜寻出可用的内存空间。而且"每个人都需要内存,而且想马上得到",使这项任务显得更加艰巨。
为了更好地理解内存管理程序的作用,我们来想象五个饭店,它们共用一个停车场,但是车位有限,假设只有100个车位。想在这五个饭店的任何一家吃饭,在这个停车场里停车是唯一可行之路。一个孤单的车仆负责车进车出,和代泊每一辆车。饭店象征应用程序,停车场象征电脑的内存,车仆则代表操作系统里的内存管理程序。早上,只有一家饭店营业,所以有足够的闲置车位,车仆的管理工作也很轻松。午饭时间则显得压力重重,因为五个饭店都在营业,对车位的要求很紧张。
本文摘自《微软创建NT和未来的夺命狂奔》
比尔盖茨和他的微软公司之所以能够取得巨大的成功,最重要的原因就是他们能够展望未来。微软既不满足于在应用软件方面不错的市场份额,也不满足于在关键的操作系统业务上依靠DOS和Windows获得的显著优势,他们一直在展望未来。而现在微软的未来被称为Windows NT。作为最先进的软件创新,NT也许会在全世界直到下个世纪的范围内重新定义计算的标准。NT赋予廉价的个人计算机的能力堪比庞大的大型机而且并没有牺牲其内在的灵活性和个人计算机的优点。