0%
第五章 計算機中的精靈 最早的操作系統

第五章 計算機中的精靈

最早的操作系統

不久基爾多爾又開始從事與英特爾公司開發的第一個8位微處理器8008相關的編程工作。他採取的仍然是二級軟體開發方法,也就是在小型計算機上為微機處理器開發軟體,這是蓋茨和艾倫使用的方法。與保羅·艾倫一樣,基爾多爾先在較大的計算機上編寫模擬運行微處理器的程序,然後使用模擬的微處理器和它的模擬指令集,編寫在微機上運行的程序。但是,與蓋茨和艾倫不同的是,基爾多爾可以利用開發系統提供的方便,一邊工作,一邊在開發系統上進行測試,以檢驗自己開發的軟體是否可行。
CP/M操作系統的某些改進是在好奇心的驅使下進行的。基爾多爾一方面繼續從事教學工作,一方面參与了本·庫珀從事的一個項目開發。庫珀是舊金山的一位硬體設計師,他曾與喬治·莫羅共同開發了磁碟存儲器系統,後來又創辦了他自己的公司,即微型化公司。庫珀想,他能夠開發一種用於星占圖的機器,並且一定可以賺大錢,於是他讓基爾多爾來幫助從事這個項目的開發。兩個人對星占學都沒有興趣,也不相信星占術,認為這都是無稽之談,不過庫珀對該產品已經形成了一定的思路,而基爾多爾則想做一些星宿位置的數學計算。他們也考慮這項產品的開發可能會在商業上取得成功。這樣,庫珀便開始進行硬體的設計,基爾多爾則負責編寫程序,最後他們終於推出了所謂的「星占術機器」,它安放在雜貨店裡,像電子遊戲機那樣吃進兩角五分錢硬幣,然後列印出星占圖。在基爾多爾看來,這種機器真是妙極了。
儘管星占術機器開發的結果令人失望,但是這使基爾多爾第一次有機會測試他的CP/M程序的各個部分。在編寫星占術機器程序的過程中,他重新編寫了調試程序和彙編程序,這是開發軟體所用的兩個工具,並且他著手開發了編輯器。這些程序是操作系統的基本組成部分。此外,他還編寫了一個BASIC解釋程序,可以用來為星占術機器編寫各個程序。在開發BASIC軟體中他學到了一些技巧,後來又將這些技巧教給了他的學生戈登·尤班克斯。
魯賓斯坦九_九_藏_書認為,他實際上從開發者那裡偷到了CP/M操作系統。但是基爾多爾的觀點卻有所不同,他認為與IMSAI達成的交易使得數字研究公司成了一家從事軟體開發的專門企業。在IMSAI公司購買CP/M后,其他許多公司也接踵而來。CP/M成了如此有用的一種軟體,以至於在IBM公司於1982年推出配有另一種操作系統的微機之前,數字研究公司在軟體領域成了打遍天下無敵手的強大公司。能夠向數字研究公司發起挑戰的編程員這時還在阿爾伯克基的MITS公司中默默無聞地乾著自己的工作。
僅僅幾個月時間,基爾多爾便在大型機語言PL/I的啟發下,開發成功稱為PL/M的語言,這是比BASIC更為複雜和巧妙的語言。基爾多爾在他的教室後面安裝了軟體開發系統,實際上建立了海軍研究生院的第一個微機實驗室。好奇的學生下課後常常走到教室後面,在開發系統上操作幾個小時。當英特爾公司將Intellec-8系列晶元從8008升級為8080,並且為基爾多爾提供了一台監視器和高速紙帶閱讀機時,這位教授和他的學生便擁有了一台可以與早期Altair計算機相媲美的系統,而這時尚未有人提出Altair計算機的開發思路。
但是,基爾多爾意識到他仍然缺少成功的計算機系統所需的一個重要部件——有效的外部存儲設備。當時大型計算機上常用的外存設備有兩種,一是紙帶閱讀機,一是磁碟驅動器。鑒於微處理器的運行速度非常慢,因此紙帶存儲器就顯得太笨拙,而且價格昂貴。基爾多爾打算買一台磁碟驅動器,並且編寫一段小程序,以便從舒加特公司那裡換取一台磁碟驅動器。這裡有一個必須解決的問題,那就是為了使磁碟驅動器能夠工作,需要有一個特殊的專門控制器,即一個電路板來處理計算機與磁碟驅動器進行通信的複雜任務。
另一位負責B5500計算機維護的人是迪克·哈姆雷特。他與另外3個人在西雅圖創辦了一家計算機分時服務公司,公司使用數字設備公司的PDP-10計算九*九*藏*書機和數字設備公司開發的新軟體。開辦這個公司的目的是讓人們可以遠程登錄到PDP-10計算機,以便充分利用該計算機的功能。哈姆雷特創辦的公司名叫計算機中心公司,即C立方公司(CCubed)。有一段時期,兩位10幾歲的孩子比爾·蓋茨和保羅·艾倫在公司員工下班后就在那裡工作,查找數字設備公司的軟體中存在的錯誤。
英特爾4004晶元的25美元價格原來是批量購買價,而且微處理器本身並沒有什麼用處,它必須裝入計算機后才能發揮其作用。基爾多爾買了一份英特爾4004微處理器的說明書,在學校里的大型計算機上編寫了一個程序,來模擬4004的功能,然後開始編寫和測試4004的代碼,以便確定廉價買來的4004晶元究竟能夠幹什麼。
加里·基爾多爾還喜歡擺弄計算機,他對計算機懂得很多,無論在理論上還是在實踐上,都稱得上是內行。在華盛頓州立大學時,他與另外一個人一直負責伯勞斯(Burroughs)公司的B5500計算機的運行和維護。後來,當該學校購買了新的CDC6400計算機時,由於基爾多爾具備豐富的計算機知識,受到了大家的尊重,因此由他擔任採購該計算機的技術顧問。
雖然許多微機公司的創始人並不具備業界領導者的典型形象,而加里·基爾多爾則根本不想成為這些人當中的一員。基爾多爾從華盛頓州立大學獲得博士學位后,便移居加州的帕西菲克格羅夫市。他喜歡這個海濱城市的旖旎風光,那籠罩在薄霧蒙蒙之中的恬靜環境使他感到非常舒適。基爾多爾說話溫和,充滿著令人敬佩的智慧,平時總是穿著隨意的運動衫和牛仔褲。他是個嗜圖如命的人。當他講話時,如果想要解釋某個觀點,他常常會找出一支粉筆或鉛筆,用畫圖來說明問題。70年代初,基爾多爾非常喜歡海軍研究生院的工作。他喜歡從事教育工作,因為這項工作使他有時間從事編程工作。他沒有特殊的經營技巧,也不想離開學校,比較完全安於現狀。
基爾多爾曾經多次試圖設計這樣一個控制器https://read.99csw.com。他還試圖開發一個介面,使他的計算機系統能夠與盒式錄音機相連接。但是他發現他的編程能力已經不能解決兩台機器之間介面的複雜工程設計問題。控制器的設計項目失敗了,基爾多爾認為他完全不適合硬體的開發。儘管如此,在技術上仍然顯示了他的遠見卓識。直到許多年之後,磁碟驅動器方才普遍應用於微機。最後到了1973年底,基爾多爾找到了他在華盛頓州立大學的一位朋友約翰·托羅德(後來他成立了自己的微機公司),他對朋友說:「如果我們能夠使磁碟驅動器運轉起來,那麼它將成為一個非常有用的設備。」托羅德果然使磁碟驅動器能夠在微機上運行了。
CP/M操作系統並不是幾十名軟體專業人員經過多年有計劃的嘔心瀝血研究而得出的成果。與早期開發的大多數重要軟體一樣,CP/M操作系統是根據一個人的思路開發而成的。
在微機產業的形成過程中,可以稱得上一種技術標準的最早的操作系統,實際上在Altair計算機問世之前就已經出現了。
與此同時,基爾多爾對軟體作了進一步的改進。1973年底,正當他在磁碟驅動器問題上不知所措的這幾個月中,基爾多爾花了幾周時間用他的PL/M語言編寫了一個簡單的操作系統。他將它命名為CP/M操作系統,這是英文微機控製程序(Control Programfor Microcomputers)的縮寫。雖然CP/M提供了將信息存儲在磁碟上時所需的軟體,但是它仍需作進一步的改進。
基爾多爾回憶說,他的父親在西雅圖開辦了一所導航學校,他總想有一台計算機能夠計算導航三角課題。基爾多爾編寫了一些在4004晶元上運行的算術運算程序,並且主觀地認為他能提供一些父親可以使用的程序。他擺弄了一下4004晶元,試圖了解它究竟具備何種能力,可以達到什麼樣的運行速度和精度。他發現這種處理器的功能非常有限,但是他仍然喜歡使用它。此後不久他用一些4004程序向英特爾公司換回一個開發系統,也就是一台用4004晶元組裝的小型https://read.99csw•com計算機,它實際上是最早的真正微機之一,儘管它不是個商用產品。
1972年中期,加利福尼亞州蒙特里的美國海軍研究生院計算機學教授加里·基爾多爾在告示牌上看到一則廣告,上面寫著「出售微機,價格25美元」。廣告中所說的產品是英特爾4004晶元,它實際上是個微處理器,它是世界上最早的微處理器,不過基爾多爾認為它的價格真便宜,於是決定買一個。
CP/M是個佔用5K內存的操作系統,它為你提供的操作系統功能恰到好處,不多也不少。
——個人計算機軟體的開拓者艾倫·庫珀
當基爾多爾與托羅德開發磁碟驅動器與計算機之間的介面時,他們交換了關於微處理器潛在應用的想法,但是沒有更多地談論微機的問題。他們與英特爾公司的設計人員仍然認為微處理器將可以用在榨汁機和汽車化油器等設備中。他們考慮推出一種綜合性的硬體與軟體開發系統,以便促進微處理器在各個領域中的推廣應用。基爾多爾對未來微處理器的這些「嵌入式應用」思路無疑是受到了他在英特爾公司中許多同事的啟發。在一段時期內,基爾多爾與另外幾位編程員使用4004微處理器編寫了一個簡單的遊戲軟體。當他們向英特爾公司的頭頭羅伯特·諾伊斯建議銷售這個軟體時,諾伊斯拒絕了。他認為微處理器未來的應用領域不是遊戲機,而應該用在手錶中。
起先,基爾多爾將他們的公司命名為星際空間數字研究公司。這個名字很快簡化為數字研究公司,這時負責公司經營的多蘿西開始使用她少女時的名字麥克尤恩作為公司的名字,因為她不希望客戶把她看成「只是加里的妻子」。數字研究公司最早的客戶與公司做成了幾筆很合算的生意。例如,曾經創辦最早的微機公司GNAT計算機公司的托馬斯·拉夫勒爾最早購買了一批CP/M操作系統軟體。他以90美元的價格獲得了將CP/M作為他公司開發的任何產品上的操作系統來使用的權利。但一年之後,CP/M的使用許可證價https://read.99csw.com格上升到了上萬美元。
多蘿西後來稱,1977年與IMSAI公司簽訂的一個合同是個轉折點。在此以前,IMSAI公司一直是以單拷貝方式購買CP/M操作系統的。由於該公司雄心勃勃計劃銷售數千台帶有軟盤的微機系統,因此促使它的市場部主任西摩·魯賓斯坦與加里及多蘿西展開了認真的洽談。最後他以2.5萬美元的價格購買了CP/M系統。這比GNAT公司支付的90美元高了不知多少倍,但是魯賓斯坦卻感到心滿意足。他認為加里·基爾多爾是個出類拔萃的編程員,但是在經商上他還是個乳臭未乾的嬰兒。
1972年基爾多爾參觀英特爾公司的微機業務部時,他驚奇地發現這家領先的半導體公司給整個微機業務部劃出的一塊地方還不到普通人家的廚房那麼大。他在那裡見到了一位非常聰明的編程員,名叫湯姆·皮特曼,他不是英特爾公司的僱員,與基爾多爾一樣,他對4004晶元也很感興趣,並且已經為它編寫了軟體。基爾多爾和皮特曼與英特爾公司的員工相處得很好,基爾多爾每周用一個休息日以顧問身份開始為英特爾公司工作。藉助這個新職務,他對4004晶元軟體又作了幾個月的調整,直到他「對該晶元著迷到幾乎不能自拔為止。」這時他意識到他將永遠不會回去給大型計算機公司工作了。
但是結果事與願違,星占術機器在經營上一敗塗地。製造商將這種機器放在舊金山的許多地方,基爾多爾與庫珀兩個人感到非常得意的機器上的漂亮旋鈕和撥號盤卻激怒了用戶,原因很簡單,用戶把兩角五分錢硬幣放進機器,而列印星占圖的紙卻出不來。基爾多爾與庫珀為了排除故障而疲於奔命。基爾多爾後來只能哀嘆說,這是一次徹底的失敗。
這樣,托羅德和基爾多爾在沒有創辦公司的情況下,便一道銷售他們的硬體和軟體,他們不是將軟硬體作為一個微機系統來銷售,而是作為一個開發系統來銷售。當基爾多爾在妻子多蘿西的鼓勵下終於開辦了一家公司,並且開始銷售CP/M操作系統時,他還根本不清楚自己編寫的軟體究竟值多少錢。他怎麼會知道呢?當時微機軟體開發商本來就很少。