天天看點

經典回顧 UNIX作業系統二十年發展史

原貼:

[加精]經典回顧 UNIX作業系統二十年發展史

    早期曆史 

  Thompson和Ritchie在1973年Purdue大學召開的作業系統原理研讨會上,發表了第一篇關于UNIX的論文。那時伯克利分校的Bob Fabry教授也在場,他立刻對UNIX産生興趣,并得到一份拷貝,準備在伯克利做實驗。

   當時,伯克利分校僅有幾台大型主機做批處理工作。是以,伯克利的計算機科學系、數學系和統計系聯合訂購了一台能夠運作當時最新的第四版UNIX的  PDP - 11/45。1974年1月,UNIX第四版錄音帶傳遞學校使用,并被研究所學生Keith Standiford安裝到這台機器上。

   那時,有太多系統需要Thompson維護,但在Purdue大學的Thompson還是沒有直接參與伯克利UNIX系統的安裝。由于在伯克利安裝的系 統出現幾次奇怪的系統崩潰,這樣一來就需要他這樣的專家來解決問題。因為伯克利僅有一台300波特的聲頻偶合式數據機,且沒有應答功能,  Thompson不得不先通過電話通知在機房Standiford,讓他将電話線插入數據機中,通過這種方法,Thompson得以在紐澤西州對崩 潰的系統進行遠端調試、除錯。

  系統多次崩潰是由于硬碟控制器不能進行重疊性搜尋引起的。相對于普通的文檔搜尋不同,伯克利的 PDP- 11/45是Thompson遇到的第一批在同一個控制器上有兩個硬碟的計算機。Thompson的遠端除錯也是伯克利和貝爾實驗室合作的一個 例子。貝爾實驗室積極肯幹的研究人員樂于助人,同時也和伯克利分享工作成果,這在很大程度上促進伯克利軟體的改進工作。

  盡管 Unix很快能夠運作,并且比較穩定。但計算機系、數學系和統計系開始出現沖突——數學系和統計系想要運作DEC的RSTS系統。争論之後,他們達成協 議:每個系可以每班運作8小時的計算機系統;Unix可以在運作RSTS系統16小時後,再運作8小時。為公平起見,運作的時間段為每天輪換。是以,第一 天Unix運作從上午 8點到下午4點,然後是第二天的下午4點到午夜,而後是第三天的淩晨到上午8點。盡管有這樣離奇的時間安排,參加學習作業系統課程 的學生仍然喜歡在 Unix而不是批處理機上做項目。

  早期的發行版本

   此間,對Pascal編譯器的錯誤恢複工作的興趣使得這一工作被引入了對系統的需求。1977年初, Joy完成了“伯克利發行版 (Berkeley Software Distribution)”。這個發行版本包括Pascal系統,以及存放在在Pascal源碼的晦澀的子目錄 下的ex編輯器。又過了一年,作為發行組的秘書的Joy,發放了大約三十份免費的系統拷貝。

  随着提供指向顯示緩沖區指針功能的 ADM-3a終端的出現,Joy最終完成了螢幕編輯器vi,給Berkeley帶來了全螢幕編輯器。他很快發現自己處在進退兩難的境地。在學校,經費不足 是常有的事,舊的裝置根本就沒有替換掉。他決定放棄進行代碼優化和修改幾個終端的支援工作,轉而通過使用一個小的解釋器去重畫螢幕,籍此來改善螢幕管理。 這個解釋器通過描述終端的特性來驅動,這最終導緻了termcap的産生。

  到1978年中期,軟體的發行版已經開始過時,需要修 改。對于Pascal系統,日益增長的使用者群體回報了很多意見,根據回報的意見修改後的系統更加穩定,同時也修改為兩遍掃描,使其可以在PDP- 11/34上運作,修改的結果定名為“伯克利發行第二版(Second Berkeley Software Distribution)”很快被縮寫為 2BSD,它包括了增強的Pascal系統,vi編輯器和幾個終端的termcap在内。Bill Joy再次獨自作了發行版軟體的內建,答複使用者的電 話,并且把客戶的回報也集中在系統中。一年後,又發行了75份系統。然而,接下來的一年Joy轉向另一個項目,而2BSD釋出還在進行。其最終版本為 2.11BSD,是一個至今仍運作在世界各個角落的幾百台PDP-11上的完整的系統。

  VAX Unix

   1978年初,Richard Fateman教授開始尋找擁有更大位址空間的機器,以繼續支援他在Macsyma上的研究工作(最初開始于PDP- 10)。新釋出的VAX- 11/780滿足了要求,并出現在預算中。Fateman和三十個同僚一同向NSF(美國國家科學基金會,譯注)提出建議,并 購買了一台VAX。

  最初VAX運作DEC的VMS作業系統,但系裡一直在使用Unix環境,并希望繼續用下去。是以,在VAX傳遞之後不久,Fateman獲得了一份貝爾實驗室John Reiser和Tom London移植到VAX上的Unix——32/V。

   盡管32/V在VAX上提供了第七版Unix環境,但它沒有利用VAX硬體的虛拟記憶體功能。如同它在PDP-11上運作的先驅一樣,它是完全基于交換的 系統。對于Berkeley的Macsyma研究組來說,沒有虛拟記憶體意味着程序的位址空間隻能局限于實體記憶體,在新的VAX上,他的大小是一兆位元組。

  為了解決這一問題,Fateman找到了Domenico Ferrari教授,Berkeley系統學科部成員,來研究為Unix 編寫虛拟記憶體支援的可能性。Ozalp Babaoglu,Ferrari的學生之一,開始着手研究在VAX上實作頁面系統,由于VAX沒有引用位,他的 工作遇到了難題。

  在Babaoglu接近完成他的第一個實作的時候,他找到了Bill Joy,以尋求在了解錯綜複雜的Unix核心中遇到的困難的幫助。Joy由于Bill Joy而對這些工作産生了興趣,并加入到将這些代碼內建到32/V,以及後續的調試工作中。

   不幸的是,Berkeley隻有一台VAX,同時用于系統的開發和日常工作。是以,在聖誕節假期的幾周内,富有耐心的使用者群體發現他們交替地登入到了  32/V和“Virtual VAX/Unix”上。他們的工作經常在後面的系統中突然地挂起,幾分鐘之後,32/V的登入提示再次出現。1979年1 月,絕大多數問題得到了修正,而 32/V正式成為曆史。

  Joy認識到32-位VAX很快就會讓16-位的PDP-11果實,于 是開始将2BSD的軟體移植到VAX上。當我和Peter Kessler移植Pascal系統時,Joy移植了ex和vi編輯器,C Shell,以及 2BSD中的無數小程式。1979年年底,完整的發行版被內建到了一起。這個發行版包括了虛拟記憶體核心、标準的32/V實用程式,以及 2BSD新增加的 功能。1979年12月,Joy發行了3BSD的近百份拷貝,這是Berkeley在VAX上的第一個發行版。

  貝爾實驗室發行的 最後一個Unix版本是32/V;其後,所有的AT&T Unix版本,從System III開始,以及其後的System V,轉而由一個強 調穩定的商業發行版本的小組繼續維護。随着Unix的商業化,Bell實驗室無法繼續作為Unix研究的清靜所在。随着研究團體對 Unix的繼續修改, 它發現需要一個能夠制作研究性發行版本的組織。由于對Unix的早期影響,Berkeley很快進入了原先由貝爾實驗室扮演的角色。

  DARPA(美國國防部進階研究局)的支援 

   同時,DARPA部門的策劃人的讨論對Berkeley的工作産生了重要影響。DARPA早期成功的計劃是把他們的主要研究中心連在一起,形成一個全國 的計算機網絡。與此同時,他們也在這些研究中心尋找已到壽命的計算機,并且換掉它們。然而,比巨大的替換開銷還大的是把研究的軟體移植到新的計算機上。另 外,由于硬體和作業系統的多樣性,使得很多主機之間不能共享軟體。

  選擇一個單一硬體的賣主是不契合實際的,因為研究小組對多種類型的計算機需要和不能單一的依靠一個制造商。然而,DARPA的決策者決定最好的方案在于作業系統的統一。經過多次讨論之後,由于Unix已被證明的可移植性,被標明為作業系統的标準。

   1979年秋,Bob Fabry回應DARPA的關于移向Unix建議,向Berkeley提議,開發一個為DARPA團隊使用的3BSD增強版本。 Fabry 帶着他的建議去參加DARPA圖象處理的會議和約見VLSI的承包人,一同去的還有ARPAnet開發者Bolt,Beranek,以及 Newman的代表。當時還為Berkeley能否開發一個工作系統心存懷疑;然而,1979年十二月3BSD的釋出打消了他們的顧慮。

   由于3BSD 版本實作了他的承諾,3BSD聲譽也随着大大提高,是以Bob Fabry和DARPA簽定了一份在1980四月生效的長約18個月的合 同。在這份合同的贊助下,Bob Fabry組建了名為“計算機系統研究小組”的組織,或者簡寫為CSRG。他很快雇傭了Laura Tong處理項目的 管理。Fabry把他的注意力轉向尋找一位能夠管理軟體開發的項目經理。Fabry以為已經通過Ph.D.資格考試的Joy,甯願完成他的學位也不肯當軟 件開發的職位,然而Joy又有了其他的計劃。三月上旬的一個晚上,Joy達電話往Fabry家裡打電話,表示對掌管Unix進一步發展感興趣。盡管這個提 議使 Fabry很吃驚,但Fabry梢加考慮就答應了。

  項目進展的的很順利。Tong建立一套發行系統,能夠使從Joy早先發 行版處理大量的定單。Fabry開始同AT&T的Bob Guffy以及加洲大學的律師合作,制定使用者需要同意使用Unix的條款。Joy将 Jim Kulp作業控制機制,還有自動重新開機動功能,1K-塊檔案系統,并且支援新型VAX-11/750。到了1980年十月,優化後的系統4BSD發 布,包括 Pascal編譯器、Franz的Lisp系統,和增強的郵件處理系統。在它9個月的生命周期中,大約賣出150份系統拷貝。許可的管理是通過 以公共機構為機關的,而不是以每台機器來收費的;是以這個版本運作在500台以上的機器上。

  随着發行版本大量增加, Berkeley Unix的可見性增加。幾個評論評論家開始評論BSD。斯坦福研究院的從業人員撰寫了一篇主要關于VMS和Berkeley Unix 運作測試結果的論文,這些測試結果表明VAX運作Unix的幾個嚴重問題。Joy看到這篇論文,立刻把未來的計劃擱置了幾個月,着手調整核心。幾周以後, 他基于Kashtan的測試結果回複一篇文章,表明Unix可以很好地運作在VMS機器上。

  4BSD不斷發行的同時,仍然處于細 微的調整階段。增加Robert Elz的自動配置代碼之後的系統,于1981年6月釋出,這個版本稱為4.1BSD。在它兩年多的生存周期内,大約發行 了400份。原計劃稱為5BSD版本,然而,AT&T反對此事,宣稱顧客可能會把它和商業Unix——System V混淆。是以,為了解決這個 争端,Berkeley答應在未來版本命名計劃中,主版本号停留在4BSD,隻增加次版本号。

  4.2BSD

   随着4.1BSD版本的發行,很多關于性能的疑慮被解決。DARPA非常滿意合同的結果。以緻于又同Berkeley簽定一份兩年期的合同,而且這次的 基金很多,大約是原來的5倍。這部分資金一半用來資助Unix項目,餘下的分給計算機科學系的幾個其他研究員。合同要求,主要工作放在系統研究上,以便  DARPA的研究人員可以很好地進行他們的工作。

  由于DARPA團隊的要求,确定了新的工作,并且開始據此對系統進改進。特别 地,新系統希望包含能夠适應新的硬碟技術的快速檔案系統、支援GB級的程序位址空間、提供靈活的互動處理通訊機制,以支援在分布式系統下的研究工作,并且 內建網絡支援,這樣能夠使運作新系統的機器都很容易地連到 ARPAnet。

  為了幫助确定新系統的方案,Duane Adams 作為DARPA在Berkeley合同的監督人,組織了“籌劃指導委員會”協助指導設計工作,確定研究DARPA的要求得到滿足。這個委員會在 1981 年4月到1983年6月,共開了兩次大會。委員會包括Bob Fabry、Bill Joy,和Berkeley的Sam Leffler、 Alan Nemeth和Bolt的Rob Gurwitz、Beranek和Newman,貝爾實驗室的Dennis Ritchie,斯坦福 (Stanford)大學的Keith Lantz、卡内基梅隆(Carnegie-Mellon)大學的Rick Rashid,麻省理工(MIT)的 Bert Halstead、Information Sciences Institute的Dan Lynch、Duane Adams和DARPA 的Bob Baker,以及加洲大學洛杉矶分校的Jerry Popek。1984年初,這些會議被由更多人參加的主題讨論會取代。

   1981年7月,在新系統中建議包含特性的原始文檔交給“籌劃指導委員會”和其他不在Berkeley的人那裡,引起了很長時間的讨論。這年夏天,我成 為 CSRG的成員,并且參與實作新的檔案系統。整個夏天,Joy一直集中設計程序間通訊機制的原型。1981年秋,Sam Leffler也作為全職人 員加入CSRG,同Bill Joy一起工作。

  當Rob Gurwitz released在Berkeley釋出早期的 TCP/IP協定,而Joy則把它內建到系統中并優化了其性能。在這項工作中,Joy和Leffler發現新系統不應該隻針對DARPA的标準網絡協定, 還應該支援更多協定。是以,他們重新設計了軟體的内部結構,精煉了多個網絡協定的接口,以便這些網絡協定可以同時使用。

  随着内部 結構重建的完成,和TCP/IP被內建到IPC功能的原型中,還寫了幾個簡單的程式,讓本地使用者可以存取遠端資源。它們是熟知的rcp、 rsh、  rlogin和rwho。它們是作為暫時性工具設計的,以至日後可以被其他更合理的工具替換(是以在指令前加了一個”r”)。這個系統,稱為4.1a, 初次發行是在1982年4月,且僅供内部使用者使用,也沒有期望它廣泛應用,然而它卻加速人們對4.2 版本的渴望。

  系統4.1a在它完成之前就過時了。但是,使用者提供回報有價值的資訊,被用來建立一個修訂計劃“4.2BSD系統使用手冊”。這份文檔在1982年2月發行,其中包含将在4.2BSD中實作的為系統調用功能提供的接口的簡要描述。

   4.1a開發的同時,我完成了新檔案系統。在1982年6月,我把它完整地內建到4.1a的核心中。新系統稱為4.1b,隻運作在 Berkeley  標明的幾台用于開發的機器上。Joy感覺一個面臨較大改動的系統連内部發行都應盡量避免,特别是這個變動需要将每台機器的檔案系統轉儲并恢複,以完成  4.1a 到 4.1b的轉換。在證明新的檔案系統能夠穩定運作之後,Leffler立即着手進行增加有與新的檔案系統有關的系統調用的工作,而Joy 主要完成互動通訊機制的修訂。

  1982年暮春,Joy宣布他将參加Sun公司。夏天過後,他将工作分開,一部分時間為Sun工 作,另一部分時間為 Berkeley工作,他花費大量時間對互動通訊機制進行修訂,而且重新組織Unix核心以減小對機器的依賴問題。Joy離開後, Leffler接管整個項目的開發工作。開發的最後截止期限已經被确定,而且Berkeley已經答應DARPA團隊1983年春天完成發行版本。由于時 間緊迫,對剩餘的工作進行了完成評估,而且而且設定優先級别。特别地,增強互動通訊機制和虛拟記憶體中最複雜的部份都降低優先級(後來完全被擱置)。同時, 由于Unix團體的期望高漲,Berkeley認為在最終版本發行之前,有必要分布一個過渡版本。這個系統被稱為4.1c,于1983年4月釋出;許多廠 商準備将4.2BSD移植到他們的硬體上。從4.1c版本開始,Pauline Schwartz被雇來管理發行工作。

  1983 年6月,Bob Fabry把CSRG管理權交給Domenico Ferrari和Susan Grahamturned,并開始度假,以解放他4年來 瘋狂的生活節奏。Leffler繼續完成系統,實作新的信号機制,增加了網絡支援,重做了單獨的輸入/輸出系統以簡化安裝程式,整合來自 Robert Elz的磁盤配額機制,更新所有的文檔,修複了自4.1c版以來的bug。在1983年8月,4.2BSD釋出。

   當4.2BSD釋出不久,Leffler離開Berkeley去了Lucasfilm,他的職務被Mike Karels取代。Karels早期發行 2.9BSD PDP的經驗,給他的新工作提供理想的背景。在我完成博士學位之後,1984年12月,我作為全職從業人員參加了CSRG,同Karels 一起工作。

  4.2BSD的流行讓人印象深刻。在發行的18個月内,簽發了1000多份站點許可。随後,又發行大量4.2BSD的 發行版,可以說其數量超過以前發行版數量的總和。大部份Unix廠商移植4.2BSD系統到他們的硬體上,而不是移植AT&T的商用 System V。因為System V既沒有網絡也沒有Berkley快速檔案系統。BSD版的Unix在商用領域占優勢的地位長達幾年。4.2BSD 的改進逐漸被內建到System V中,廠商逐漸又轉而移植System V,不過,後來的BSD開發成果仍然繼續被System V引進。

  4.3BSD 

  4.1BSD發行不久,很快招緻多方面批評。大部份人抱怨系統運作太慢。這個問題 并不令人驚訝,因為新的功能還沒有被優化,許多核心中的資料結構和新的功能不能協調工作。Karels和我的第一年完全花費優化系統上。

   在花費二年時間調整系統和精煉網絡代碼之後, 我們如預期的1985年夏天,6月在Usenix會議上宣布了釋出4.3BSD的消息。然而我們的發行計 劃被BBN突然中止。他們及時地指出我們從未用他們的最終網絡代碼修改4.2BSD,相反,我們仍然在使用他們早先給我們的初始模型,這個模型其後經過了 大量的修改。他們向DARPA抱怨,預想的情況應該是Berkeley實作接口,BBN實作協定。是以Berkeley應該在4.3BSD中用BBN設計 的TCP/IP代碼。

  Mike Karels得到了BBN的代碼,而且做了自從代碼被傳遞到Berkeley以後的工作進行了評 估。他決定最好的計劃是把BBN代碼的優秀思想結合到 Berkeley代碼基礎中,但是不要替換Berkeley代碼。理由有Berkeley代碼已經 在4.2BSD中廣泛地測試和進行了很大改進。然而,折中處理,他提出兩者都包括在4.3BSD的發行版本中,讓使用者在核心挑選使用那種代碼。

   檢讨Mike Karels的決定之後,DARPA确定發行二個代碼基礎,那會導緻不必要的互操作問題,決定隻釋出一套代碼。為了要決定使用哪中代碼作 為基礎,他們把兩者都給Ballistics研究實驗室Mike Muuse,作為第三方評估者。在一月評估之後,報告Berkeley代碼更有效率,而 BBN代碼處理阻塞比較好。更重要的一點,Berkeley 代碼在各種測試中都能很好地通過,BBN代碼在高負荷條件下會菪機。DARPA最後決定, 4.3BSD應該使用Berkeley代碼基矗

  修改一新的4.3BSD最後在1986年6月釋出。就向預期的一樣,它平息了多數 使用者的抱怨,就像4.1BSD平息了多數使用者對4BSD的抱怨一樣。雖然大部份廠商已經開始轉向System V,但是4.3BSD的大部份成果還是內建 到他們的系統之内,特别是網絡子系統。

  在1986 年10月,Keith Bostic參加了CSRG。他的任務是完成在他的早 先工作之上一個項目,要把4.3BSD移植到PDP-11。雖然Karels和我都認為它不太可能,在VAX編譯成250 Kbytes的系統,并且能滿 足PDP-11的64 KB的位址空間的要求。但是,我們還是同意Bostic 可以實作他的這有設想。令我們吃驚的是,移植非常成功,他在PDP-11 上使用一組複雜的疊加集合和附加處理。其結果是2.11BSD的釋出。該系統由 Casey Leedom和Bostic完成,在1998年仍然在一些 PDP-11遠行這個系統。

      同時,顯然易見VAX體系已經達成生命的晚年,是該開始考慮在其他的機器上運作流行的BSD 時候了。Computer Consoles公司這時制造了一種叫做Power 6/32的新體系的計算機。不幸的是,當公司決定改變它的政策方向的時 候,該體系不被支援。然而,他們确實為CSRG提供了能夠完成我們工作的一些機器。于是Bill Joy開始,從整個BSD核心中分離依賴機器的那部分代 碼。這個工作的結果是,1988年6月釋出4.3BSD-Tahoe。Tahoe來自 Computer Consoles開發過程中所有的一個名字,他 們原本打算将它用于Power 6/32機器上。雖然Power 6/32 機器生命周期很短,但它對BSD向其他機器移植,分離核心代碼工作有寶貴的價 值。

  Networking, Release 1

  4.3BSD- Tahoe的釋出時,所有的BSD使用者必須事先得到AT&T的一份源代碼的許可,因為Berkeley從來沒有隻發行二進的 BSD 系統;發行 版本完全包含系統每個部分的原代碼。Unix系統和BSD系統的曆史顯示原代碼具有強大的威力。使用者不是消極地使用系統, 而是積極地修改臭蟲,改良性能 和完善功能,甚至完全地增加新的特征。

  随着AT&T原代碼許可費用逐漸增加,那些想要用BSD 代碼為PC市場開發僅以 TCP/IP為基礎的網絡産品的廠商,發現為每個二進制版本付費是不可能的。是以,他們要求Berkeley把網絡代碼和實用工具分離出來,在許可條款 下,提供該他們,而不再需要AT&T的原代碼許可。顯然易見,TCP/IP 網絡代碼不包含在32/V中,完全由Berkeley和它的支援者開 發。BSD早期的網絡代碼和支援工具在1989年6月開始釋出,即 Networking, Release 1,首次由Berkeley 發行的可自由 再釋出的代碼。

  那許可條款很寬泛。獲得許可的人可以發行被修改的代碼,不論是以源代碼還是二進制的形式發行,Berkeley都 不會計較。唯一的要求是源檔案中必須包含完整的版權聲明,在産品的文檔中指明産品中包含來自來加州的大學和它的貢獻者的代碼。盡管這樣,Berkeley 還是對每盤錄音帶收取,000 費用,任何人都可以從已經得到錄音帶的人那裡免費的到副本。的确,一些大的站點在其釋出不久,就建立匿名ftp供人免費下載下傳。 由于許可條款很寬泛,大約有幾百個組織購買了錄音帶,發行費用可以幫助進一步項目的發展,CSRG當然很高興。

  4.3BSD-Reno

   同時,基礎系統的發展仍在繼續。虛拟記憶體系統接口第一次在4.2BSD體系描述檔案中出現,最終的已實作。大多數情況下,CSRG總是試着尋找存在的代 碼然後整和,而不是從頭寫起。如此,并非設計一個新的虛拟存儲系統,我們四處尋找存在的替代方案。我們的第一選擇是在Sun公司的SunOS下出現的虛拟 存儲系統。雖然有關Sun公司對Berkeley貢獻代碼的一些讨論,但是還是不了而止。是以,我們的第二個選項,卡内基梅隆大學的Mach作業系統的虛 拟存儲系統被內建到系統中。Utah大學的Mike Hibler将Mach的核心技術同4.2BSD體系中的接口合并(也是被SunOS使用的接口)合 并。

  那時,在系統中,另一個主要附加的是同Sun公司相容的網絡檔案系統(NFS)。CSRG再一次得以避免實際編寫NFS代碼,這次內建工作是由加拿大的Geulph大學的Rick Macklem完成的。

   雖然我們仍然沒有完成預發行版本4.4BSD的所有性能,但是CSRG決定發行一個過渡版本,目的是得到新系統的回報和經驗。這個許可過渡版本被叫做  4.3BSD-Reno,在1990年初發行。版本的名字來自内華達州一座大的賭博城市中的一個斜的記念物,提醒使用者運作這個版本是一場賭博。

  Networking, Release 2

   在我們一次每周的團體會議上,Keith Bostic提出可再釋出網絡版本的普及性的主題,建議發行包含更多BSD代碼的擴充版本。 Mike Karels和我指出,發行系統的大部份是一件艱巨的工作,但是我們同意,如果他能夠重新分類實作幾百個實用程式和龐大的C語言庫函數,那麼我 們會處理核心。事實上Karels和我私下裡感覺讨論已經結束。

  不過,這并沒有阻礙Bostic在技術上的探索和大量網絡基礎上 的開發工作。他還要求其他成員依據新釋出的Unix實用程式。作為補償,他們僅要求他們的名字和Berkeley貢獻者的名字同時在實用程式中列出。工作 進展很慢,而且大部分是一些瑣細的實用程式。但是同樣完成實用程式清單不斷變大,而且 Bostic繼續尋找貢獻者(例如Usenix的公開場合),貢獻 者的人數繼續增長。很快清單超過過了100多個公用程式,而且在18個月内幾乎所有重要的使用程式都被完全重寫。

  後來, Bostic帶着實用程式清單進入Mike Karels和我的辦公室,想要知道我們正在核心上的工作進展。我們重新配置設定工作,Karels, Bostic和我花費以後的幾個月詳細察檢查整個發行版本,一個檔案一個檔案地删除來自32/V版本的代碼。當工作将近結束的時候,我們發現還有六個核心 檔案,且沒有必要重寫。我們考慮重寫那六個檔案,以便我們可以發行一個完全的系統。我們決定改為發行現有的系統,然而,我們需要得到大學行政部門高層人員 的許可。經過内部讨論之後,并驗證了我們對代碼的所有權問題,我們提前發行了新版本。

  我們起初的想法是,為我們的的第二個可自由 再發行的系統起個全新的名字。然而,我們看到大學律師寫的新版許可證,那樣完全沒有必要,而且可能浪費時間。是以,我們決定對 Networking Release 1的許可證進行修訂,并且以Networking Release 2來發行我們的系統。就這樣,我們在1991 年六月發行了擴充後的系統。這個版本的費用同第一版的一樣。與以往相同,幾百個個人群組織以每份拷貝 ,000的費用從Berkeley得到它的副本。

  Networking Release 2和完整系統的差别不斷減小,在發行的六月内,Jolitz已經重寫了六個不太重要的檔案。 他随後就發行了完全編譯基于PC體系,可啟動的系統。 Jolitz的386/BSD完全在網絡上發行。他搭建了匿名FTP,以便使用者可以免費下載下傳。在幾 個星期内,他有了大量的追随者。

  不幸的是,由于全職工作的需要,Jolitz不能把所有的時間用于修改BUG和提高 386/BSD系統性能。是以386/BSD發行幾個月之内,一群熱心的 386/BSD使用者形成了NetBSD使用者組,彙集他們的資源,幫助維護和增 強後來的系統。他們的發行的系統就是著名的NetBSD 分支。NetBSD團體選擇盡可能地支援大量的體系,延續CSRG的研究風格來發展系統。直到 1998年,他們的釋出還僅僅限于網絡;沒有提供發行媒體。他們團體主要目标仍是核心技術使用者。NetBSD項目的站點是http: //www.netbsd.org。

  FreeBSD團體在 NetBSD團體成立幾個月之後成立,其宗旨是僅支援個人計算機體 系,并追求數量更多(較少技術化)的改進,同Linux作法十分相象。他們精心的設計安裝腳本,以低廉的價格的CD-ROM發行他們的系統。易于安裝和瘋 狂的網絡促銷、以及在Comdex大會的表演導緻快速的,大量的發行。不可否認, FreeBSD是所有Networking Release 2分支中 發行最多的系統。

  FreeBSD也曾為Linux的流行而苦惱,是以FreeBSD平台加入Linux模拟模式。這個特征允許 FreeBSD使用者運作大量的 Linux程式。同時,也促進FreeBSD系統向更加健壯,高相容性和高性能方向發展。最近,團體開設了一個 FreeBSD商城,把FreeBSD社群的許多部份連接配接起來,包括商業服務、産品、書籍和新聞報道。

  在1990年代中期, OpenBSD從NetBSD團體中分離出來。他們的技術上的宗旨瞄準增強系統的安全。他們的推廣重點在使系統更容易使用和更廣泛地獲得。是以,他們開始 生産并銷售CD-ROM——這一FreeBSD最先采用的發行方式。關于OpenBSD項目的更多資訊,可以在 OpenBSD.org找到。

  訴訟 

   在一些組織免費地發放Networking Release 2的錄音帶的同時,成立了一家公司,Berkeley Software Design公 司,主要從事發行提供商業支援的代碼的事務(關于這家公司的詳細情況清參考他們的網站http://www.bsdi.com)。和其他群體一樣,他們開 始追加缺少的那6個檔案,像Bill Jolitz為386/BSD發行版作的那樣。BSDI從1992年1月開始以5的價格出售他們的系統,包括源代碼 和編譯好的代碼。他們于是開始釋出廣告,吹捧他們的系統相對System V包含源代碼的二進制系統之間99%的差價。有興趣的讀者可以撥打1-800- ITS-Unix。

  BSDI開始他們的銷售戰之後不久,他們就收到了來自Unix系統實驗室(USL, 一個基本上屬于 AT&T的,開發和銷售Unix的機構)。這封信要求他們停止以“Unix”的名義推廣他們的産品,包括他們“欺騙性的”電話号碼。雖然電話号碼 很快被停用,而且他們的公告也解釋了他們的産品和Unix隻見的差別,USL仍然不滿意,并且撰寫了起訴書,要求禁止BSDI出售他們的産品。起訴書宣稱 BSDI出售的産品中含有屬于USL的代碼。USL同時要求在訴訟宣判之前,中止BSDI的銷售,聲稱BSDI繼續銷售會給USL造成不可挽回的損失。

  調查聽證會中,BSDI指出他們隻是簡單地使用了來自加州大學的免費發行的代碼,以及六個附加的檔案。他們願意就這六個檔案展開調 查,但不希望承擔加州大學發行的代碼的責任。法官同意了BSDI的主張,并通知USL他們需要修改他們的起訴書,否則将駁回起訴。認識到針對六個檔案的起 訴将沒有意義, USL決定重新撰寫起訴書,起訴BSDI和加州大學。和他們先前作的一樣,USL要求加州大學停止釋出 Networking Release 2,當然,也包括BSDI公司的商業産品。

  由于禁令的迫近,人們開始積極地準備。CSRG的所有成員和BSDI幾乎所有的雇員都宣誓作證。律師們針鋒相對,互不相讓。Keith Bostic和我不得不親自撰寫材料,我自己也不得不為各種陳詞寫上幾百頁的材料。

   1992年12月,美國衆議院紐澤西州選區法官Dickinson R. Debevoise受理了關于釋出禁令的要求。盡管法官通常會立即釋出禁令, 但他認為這樣的禁令需要經過深思熟慮。六周後的一個星期五,他簽署了一份四十頁的意見,表示他拒絕禁令,并駁回除兩條之外的其他主張。餘下的兩條訴求被局 限于最近的版權和可能洩漏商業機密的問題。他建議這一案件應當在聯邦法院之前被州立法院系統受理。

  加州大學根據這一決定,立即在 周一提出對USL的反訴。除了加利福尼亞州之外,大學還為聯邦法庭的訴訟進行了準備。憲法要求所有州的檔案必須在一個州準備,以防止訴訟者自己帶着厚重的 提包為準備50份材料——每州一份。其結果是,如果USL希望在聯邦法庭對大學提起訴訟,他們必須在加州,而不是紐澤西做同樣的事情。

   大學的訴訟聲稱USL沒有盡到作為BSD代碼作者盡到的責任,因為System V中BSD代碼的署名權已經在先前的許可證中規定了。如果這項主張被證 明是有效的,那麼大學要求USL重印他們所有的手冊,并在主要出版物,如華爾街時報、财富雜志刊登整夜的廣告以通知整個商業界。

   其後不久,USL被Novell從AT&T買走。Novell的CEO, Ray Noorda,公開表示他甯可在市場上,而不是在法庭上進行較 量。1993年夏談判開始,然而不幸的是,雙方都已經陷得很深,以至于談判進行的異常緩慢。最後,USL一邊在Ray Noorda的上司下在一些關鍵問 題上做出了讓步,最終于1994年1月達成了協定,其結果是組成Networking Release 2的18,000個檔案中的3個被删除,并對其他 一些檔案進行了細微的修改。同時,加州大學同意在大約70個檔案中加入USL的版權,盡管他們仍然被免費分發。

  4.4BSD

   曲折之後,一個新版本4.4BSD-Lite在1994年6月釋出。其許可條款同 Networking releases一樣。特别地,條款允許以源 代碼和二進制的形式自由發行,隻要完整保留加洲大學版權聲明,并且其他人使用時也能得到這個版權聲明。同時,發行完全的系統4.4BSD- Encumbered版本, 仍然需要使用者有一份USL源代碼許可。

  糾紛結果還規定:USL不得控告任何使用4.4BSD- Lite作為他們系統的基礎的組織。如此,那時所有發行BSD的團體,包括BSDI, NetBSD 和FreeBSD,必須以4.4BSD-Lite作 為他們的代碼來源,然後整合系統,提高系統性能。雖然這次重新以4.4BSD-Lite為基礎延誤了各個團體開發系統的時間,但更幸運的是, Networking Release 2發行三年内,如同CSRG一樣,各個分支團體的開發工作必須重新同步。

  4.4BSD-Lite, Release 2

   由 4.4BSD-Encumbered 和 4.4BSD-Lite release版本發行得到的經費,用來贊助一個兼職的從業人員,來修改臭蟲和 提高系統性能。這樣長達二年的工作,持續到臭蟲的比率一直下降和性能已不能提高為止。最終的改變促成4.4BSD-Lite版本在1995年6月發行。這 些大多數的變化都是以後其他系統的源代碼的基矗

  4.4BSD-Lite第二版的釋出以後,CSRG同時也被解散。在領航BSD的 二十多年中,我們感覺應該讓其在新思想和無限的熱情中生存和發展。當它可能有單一集中的權威監督系統發展像是最好的時候,用一些團體不同的特許狀的主意确 定那許多不同的接近将會被嘗試。因為系統被以來源代碼形式發行, 最好的結果就是它能夠容易地被其他團體接受。如果某些改變特别地有效,他們可能最後變成 占優勢的系統。

  今天,開源軟體運動正在得到更多的注意和尊敬。雖然Linux系統非常有名,但是其中大約一半以上的程式都來自BSD的發行版本。Linux釋出很嚴重地依賴編譯器、調試器以及其他由自由軟體基金會所寫的開發工具。

   總而言之,CSRG,自由軟體基金會(Free Software Foundation)和Linux核心開發者已經投身開源軟體運動,并以此建立了 基礎平台。我很驕傲有機會提倡開源軟體運動。我盼望有一天,無論身處何處的使用者和公司在開發和購買軟體的時候都願意采取這種方式。

 TAG knight
發表于: 2006-10-20,修改于: 2006-10-20 13:04,已浏覽644次,有評論0條 推薦 投訴
經典回顧 UNIX作業系統二十年發展史

繼續閱讀