車仆於是開始筋疲力盡。他不僅需要留意每一個車位的狀態,而且必須迅速無誤地代泊每一輛車,並在客人離開的時候,準確地找到它們。既然停車位占用的是物理空間,那它肯定能擴張:增加車位成本很高,但是它能緩解停車場的阻塞。而更好的解決辦法是,車仆必須更聰明更敏捷地工作。當車位已滿,車仆必須在入口等待車位空出來。優秀的車仆能夠指揮這些車輛,所以當停車場暫時不能運作的時候,沒有人會引起争吵。而無能的車仆卻常常不能很好地管理未停放的車輛,所以場地充滿著混亂。然後,每個客人都得離開他或她的飯局,找到他或她的車,重新再停一次車。
車仆的工作形象地顯示,稍不註意,局面就失去把握。皮亞佐利想創造出一個聰明絕頂的車仆,但他堅持用陳舊的方式。
對可靠性的要求極大地影響了操作系統的整體設計。什麼是隔離應用程序的最佳方式呢?這樣當應用程序出現故障時會不會使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賦予廉價的個人計算機的能力堪比龐大的大型機而且並沒有犧牲其内在的靈活性和個人計算機的優點。