網路農夫 --  Home 網路農夫 --  Home
網路農夫 --  Home
wait.....

1-1-6 一個重要的延續及發展 -- BSD UNIX

時間回到 1973 年 11 月, Ken Thompson 和 Dennis Ritchie 在印第安那 Purdue 大學的一場作業系統原理的座談會。會場上、坐著一位柏克萊大學(U.C. Berkeley)教授,名字叫 Bob Fabry。當天的 K&R 所發表的 UNIX 立刻引發 Bob Fabry 的極度興趣。當時的柏克萊還是處在使用大型電腦主機、批次執行程式的階段,並沒有像UNIX這樣的交談式作業環境。會後,他便決定將 UNIX 帶回柏克萊。

 

於是柏克萊的計算機科學、數學與統計三個系所合買的一台 PDP-11/45,準備用來迎接UNIX。1974年1月,Bell Labs寄來了一捲V4的磁帶,學生 Keith Standiford 便開始進行安裝 V4 的工作。安裝時 Standiford 碰到了問題,便轉向 Bell Labs 求援。人在新澤西州的 Thompson 便透過柏克萊這端速度只有 300-baud 的數據機在線上進行偵錯。

在 UNIX 的發展史上,這是 Bell Labs 與 柏克萊的第一次接觸。

完成除錯後,V4便順利地在柏克萊這台新買的 PDP-11/45 電腦上工作了。當時這台是三個系所合買的,計算機科學好不容易裝上了UNIX,卻碰到數學與統計系所要使用 DEC's RSTS system,所以在一陣協調後,UNIX 與 DEC's RSTS system 以 8:16 小時的比例分配,供三個系所輪流使用。一段時日後,具交談式功能的 UNIX 在效能上的表現得到絕多數學生們喜愛,紛紛將自己的計畫轉向 UNIX 的時段。而一天佔了 16 個小時的批次處理時段卻乏人問津。

 

當時 Eugene Wong 與 Michael Stonebraker 教授,看上了 UNIX 提供的便利性,便打算將他們的 INGRES 資料庫計畫重原先批次處理的電腦環境轉移到 UNIX 系統上面。在 1974 年,他們為這執行計畫添購了一台新的 PDP-11/40 電腦,上面安裝了 V5。這個計畫也就是柏克萊的第一個將作業環境轉移到 UNIX 的案子。UNIX 作業環境的需求,在柏克萊迅速地成長。為了應付需求,Michael Stonebraker 與 Bob Fabry 教授決定再申請購買兩台 PDP-11/45。1975年初,DEC 推出 PDP--11/70,價格差不多等於兩台 PDP-11/45,但功能強過 PDP-11/45,所以他們便決定改購買一台 PDP-11/70。

這台機器引來了 Ken Thompson、碰上 Bill Joy 以及日後產生了 1BSD。她就宛如是一塊UNIX史上的地標,沿襲自Bell Labs,豎立在伯克萊,承先啟後並開創新局。農夫個人認為,她應該被供在博物館。

當這台機器在 1975 年終運達伯克萊時;同一時間,Thompson 受邀回母校(柏克萊)當客座教授,科目就是 UNIX。Thompson 在校期間與 Jeff Schriebman 和 Bob Kridle 一起動手將新版的 V6 安裝在 PDP--11/70。

Bill Joy1975年,一位密西根州大學的畢業生來到了伯克萊,他的名字就是 Bill Joy。當時 Joy 和同學 Chuck Haley (tar 就是他寫的)喜歡一起泡在電腦房裡面,Thompson 也時常插上一腳。他們不但改善了 Pascal 的解譯能力,也提高了 Pascal 的偵錯能力加快解譯與執行的速度。另外換裝上 ADM-3 的螢幕後,他們覺得 ed 文字編輯指令並不合用;於是根據另外一個相似的 em 指令,發展了自己的覺得滿意的文字編輯工具,也就是指令 ex。

 

1976 年夏天,Thompson 結束了他的休假回到 Bell Labs。此時的 Joy 和 Haley 已經開始著手探索 UNIX kernal,甚至還做了一些修改。1977年初,Joy 製作了一捲磁帶,上頭寫著 "Berkeley Software Distribution.",這就是 1BSD。其中包含新的 Pascal compiler 與 ex 編輯器。

 

次年,來了幾台新螢幕 -- ADM-3a,這種螢幕支援游標位址顯示,Joy 在這種螢幕上完成了有人愛不釋手;有人恨之入骨的文字編輯器 -- vi。接著不久,Joy 便發現一個問題,老舊的螢幕裝備,還是會被用在其他的電腦上。為了支援上的方便,Joy 針對此現象設計了一個介面,用來管理、支援不同的螢幕裝備。這個介面就是現在的 termcap。1978年中,包含了功能加強的 Pascal 與 vi 及 termcap 的 "Second Berkeley Software Distribution," 也就是 2BSD,迅速地取代了原先的版本。1979 年,至少有 75 部 PDP-11 的機器上安裝 2BSD 在運作著。自此在 DEC PDP-11 系列上執行的 BSD 版本便一直以 2.xBSD 作為識別。由於 PDP-11 電腦實在相當長壽,持續到今日農夫我仍然在網路上發現過關於 PDP 電腦的網站。似乎到今日它們仍舊在某些地方默默地工作著。2.xBSD 最近的一次改版是在 1987 年,使用 4.3 BSD 為主架構改寫,版本定為 2.10 BSD。

在 BSD UNIX 中登場的重要功能當中,有一個直到今日仍然叫人又愛又恨的指令 – vi。我接觸過不少學習 UNIX OS 的人,大部分的人對 vi 的使用與掌握都不算順手,其中恨死這個指令的也大有人在,前些日子農夫我還看到某個網站公開討論起 vi 是否阻礙了 UNIX 的發展?實在誇張了一點!

 

Bill Joy 多次公開地說,他要是知道 vi 會如此受"歡迎"的話,他寧願當初沒有寫 vi 這隻程式。不過 Bill Joy 也說過,當時他原本還想加入一項 Multiple Windows in vi 的功能,不過當他在寫這部分程式的時候,磁帶機壞了,所以 Bill 只好在沒有備份的情況下繼續工作,想不到"屋漏偏逢連夜雨",程式寫到一半,他使用的硬碟也跟著掛了。在無可挽救又沒有備份磁帶的情況下,Bill 宣告放棄為 vi 增加 Multiple Windows 這項功能。事後 Bill 為前一版的 vi 寫好使用說明後就繼續作其他的事。所以 vi 就長成今天那付德性。農夫我認為這或許是福不是禍!搞不好當初要是連 Multiple Windows 這項功能一起發表的話,上頭的圖可能就是遺照了。

當時有位 Richard Fateman 教授,原先使用一台 PDP-10 上進行著他的 Macsyma 研究計劃。但他需要更大的記憶體位址來執行程式,所以在 1978 年初,他看上了當時迪吉多新發表的 VAX-11/780。好不容易,他聯合了其他的部門才湊足購買 VAX 的經費。剛開始時,機器原本安裝的是 VMS 作業系統。不過別的成員要執行 UNIX 作業系統,於是 Fateman 安裝上了 V32。但問題來了,V32 並不支援虛擬記憶體,Fateman 便找上了Domenico Ferrari 教授,希望他與他的研究小組能為 UNIX 加上這項功能。當時一位學生叫 Ozalp Babaoglu,他想到了一些解決的方法似乎可行,但因為牽涉到 VAX 硬體與 UNIX kernal 的問題,於是他找上了 Joy 幫忙。就在只有一台 VAX 的狀況下,他們努力奮戰著。1979 年 1 月,在 VAX 上支援虛擬記憶體的 UNIX 版本終於誕生,V32 從此走入歷史。緊接著 Peter Kessler 與 Marshall Kirk McKusick 為他加上了 Pascal;Joy 也將 2BSD 移轉了ex、vi 編輯器以及 C shell。這個版本就是 3BSD。一個首次支援虛擬記憶體、demand paging 和 page replacement 的 UNIX OS。

 

版本:Beta-2001-05 -- 網路農夫