歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> UNIX演義

UNIX演義

日期:2017/2/28 11:27:22   编辑:關於Unix


UNIX演義
本文譯自"Life with UNIX(R) -- A Guide for Everyone"
譯者向次書的兩位作者Don Libes, Sandy Ressler表示衷心的感謝,他們為人們更好地
了解UNIX作出了貢獻。
我們希望這些文件中的資訊能對你有所幫助,但是並不保證是正確的,若發生損害請
自行負責 
-----------------------------------------------------------------------------
UNIX演義(一)
"One half of the world must sweat and goarn that
the other half may dream."
----Henry Wadworth Longfellow
UNIX的歷史展現了許多關於UNIX哲學的內容。從她為什麼流行至今,到她為什麼有
如此古怪的許可證制度,我們沿著UNIX走向成熟的道路講述這段歷史,研究UNIX
哲學及其演變過程。
1.1 創世之初
我們先談談UNIX的創世之初,有兩點需要牢牢把握:
1) 雖然UNIX的許多部分和其實現過程是創造性的,但其幾個重要的思想都可以追溯
到早期的操作系統發展,並且
2) 如果不是Ken Thompson,如果不是他心靈手巧,擅長擺弄當時那些身邊觸手可及
的工具,UNIX是不可能被寫出來的。
那是1968年,Ken Thompson和同在貝爾實驗室計算機研究小組的同事們一起進行關
於MULTICS項目的研究工作。MULTICS是一個誤入歧途而又輝煌燦爛的計算系統。她提
供了非常復雜的功能,同時消耗大量的計算資源。她太大而且太慢,研究人員們不
得不一開始就縮減其初始設,進行簡化實現。
盡管如此,幾個可工作的MULTICS實現還是完成了,提供了非常好的計算環境。在貝
爾實驗室的那個是在一台模擬GE635的GE645上完成的。系統提供分時服務,但她主
要是面向批處理的,其環境笨拙且不友好。Ken和他的伙伴們(特別是Dennis Ritchie
和Joseph Ossanna)不想放棄MULTICS提供的舒適環境,於是他們開始向AT&T的管理
部門游說,希望能獲得一個交互式平台,諸如DEC-10,並在其上建造他們自己的操
作系統。
DEC-10是DEC公司(Digtal Equipment Corp.)推出的一系列機種的一種。該機有一個
非常靈活的交互式分時系統。很不幸,與那個時代的許多分時平台一樣,DEC-10非
常昂貴。
我們應該慶幸,Ken的請求被拒絕了。這樣的情性又發生了幾次,這對Ken來說是太
不幸了。由於MULTICS的失敗,AT&T管理當局被Ken的計劃打動,他們也沒有興趣來
投資另一個僅僅是在不同的硬件上設計一個看起來與MULTICS一樣的操作系統。
與此同時,Ken對一個成為星際旅行的游戲非常有興趣。該程序模擬太陽系的幾個主
要的星體和一艘可在不同對方著陸的飛船。Ken將其安裝在GE系統上,GE系統忽快忽
慢的響應時間是Ken大為失望。而且根據後來Dennis的說法,在GE系統上運行一次該
游戲需要75美元,太貴了。Ken和Dennis後來找到了現在非常有名的"little-used
PDP-7 sitting in a corner",他們用GE系統生成了可在該機器運行的程序代碼。
-----------------------------------------------------------------------------
UNIX演義(二)
1.2 創世
有了星際旅行,Ken有了正當的理由去實現他曾在MULTICS計劃中設計和模擬的理論
上的文件系統。很自然,一台有用的機器需要的不僅僅是一個文件系統。Ken和他
的朋友還完成了第一個命令解釋器(或Shell)和一些簡單的文件處理工具。開始時,
他們用GE系統來為PDP-7進行交叉編譯。很快,他們寫好了匯編器(assembler),系
統已經開始自支持了。
這時的系統已經有了象UNIX了(如用fork()來支持多任務)。文件系統與現在的文件
系統相對相似。它使用i-節點,而且有特殊的文件類型來支持目錄和設備。那台
PDP-7可同時支持二個用戶。
MULTICS其實是代表"MULTiplexed Information and Computing System"。1970年,
Brian Kernighan開玩笑稱Ken的系統為"UNICS",代表"UNiplexed Information
and Computinig System",畢竟與Ken的系統相比,MULTICS過於龐大了。(某些人
稱MULTICS代表"Many Unnecessarily Large Tables In Core Simultaneously"
而UNIX則是裁剪了的MULTICS。不久,UNICS變成了UNIX而且被流傳下來。
計算機研究小組並不對PDP-7十分滿意。其一是它是借來的一台機器,更主要的是它
能力有限,不太可能提供計算服務。於是小組再次提交申請,這回是一台PDP-11/20
來研究文字處理。該申請與前一次的顯著的區別是PDP-10的價格只是DEC-10的鳳毛
麟角。由於這次的申請十分具體,一個文字處理系統,AT&T的管理當局寬宏大量為他
們購買了PDP-11。
1970年UNIX被移植到PDP-11/20上。那可不是一件輕而易舉的事,整個系統全是用
匯編寫的啊!小組又將匯編寫的roff(又稱為runoff,troff的前身)從PDP-7移植到
PDP-11上。再加上一個編輯器就足以稱為一個文字處理系統了。
與此同時,貝爾實驗室的專利局正在尋找一個文字處理系統。他們選擇了計算機研究
小組的基於UNIX系統的PDP-11/20。貝爾實驗室專利局成了UNIX的首家商業用戶。
這第一個系統有幾點是很值得注意的。跑UNIX的PDP-11/20沒有存儲保護。它僅有
一個0.5Mb的磁盤。它支持同時三個用戶,分別完成編輯,排版,再加上計算機研究
小組進行進一步的UNIX開發。該系統的手冊被標為"First Edition",日期為1971年
11月。
現在都習慣在手冊的版本後注明發行號。這樣可能更清楚些,editions也可稱為
versions,他們是一個意思。例如,Version 7和7th Edition是一回事。
第二版於1972年發行,增添了管道的功能。該版本還加上了除匯編之外的編程語言支
持。特別值得一提的是Ken曾試圖用NB語言來重寫核心。
NB是由B語言(由Ken和Dennis設計)修改而來的。B語言的前身是BCPL,BCPL(Basic
CPL)是Martin Richards於1967年在劍橋設計的。CPL(Combined Programming
Language)則是1963年倫敦大學和劍橋大學的合作項目。而CPL則頗受Algol60(1960
設計)的設計思想影響。
所有這些語言在控制結構上都和C語言相似,不過B和BCPL都是"無類型"的語言(盡管
有點用詞不當),它們只支持按"字"來訪問內存。NB演化為C,而C則很快稱為新的
工具和應用的首選語言。
參與MULTICS(MULTICS用PL/I書寫)的經驗告訴Ken和Dennis,用高級語言來寫系統是
合算的。由此,他們一直試圖完成它。1973年,C語言加入了結構和全局變量。與此
同時,Ken和Dennis成功地用C重寫了UNIX核心。Shell也被重寫了。這增加系統的魯
棒性,也使編程和調試變得容易了很多。
那時,大約有25個UNIX系統。在貝爾實驗室內部成立了UNIX系統小組來進行內部維護
工作。幾家大學都和貝爾實驗室簽定協議,獲得了第四版的拷貝。協議主要是不洩露
源碼,在那時還沒有許可證這回事。Ken自己錄制磁帶,不收任何費用。第一卷磁帶
由在紐約的哥倫比亞大學獲得。
1974年,Ken和Dennis在Communications of the ACM上發表了論文介紹UNIX系統。
那時,Communications是計算機科學的主要刊物,那篇文章在學術界引起了廣泛的興
趣。第五版正式以"僅用於教育目的"的方式向各大學提供。價格也只是名義上夠磁帶
和手冊的費用。第五版在許多大學用作教學。
這時Ken和Dennis仍在積極地投入UNIX的研究;然而,他們繼續避免提供支持的承諾。
他們的小組被稱為"Research"(或在貝爾實驗室內部稱為"1127")。他們的機器被命名
為research。你可以通過uucp向他們發送bug報告,打電話詢問他們,甚至進他們的
辦公室和他們一起討論UNIX的問題。通常他們總能在其後的若干天內解決bug。
與research的在貝爾實驗室的另一個小組被稱為PWB,Programmer's Workbench。由
Rudd Canaday領導的PWB小組支持一個用於大型軟件開發的UNIX版本。PWB試圖向那些
並不對UNIX研究感興趣的用戶通過服務。他們做了大量的工作來強化了UNIX的核心,
包括支持更多的用戶。PWB的兩個非常有用的計劃分別是SCCS(源碼控制系統)和RJE
(使用UNIX作為實驗室其它主機的前段)。PWB最終注冊為PWB/UNIX1.0。
UNIX替代了越來越多的PDP-11上的DEC公司的操作系統。盡管UNIX不被支持,但她的
魅力遠勝於她的問題而吸引了許多的用戶。除了系統本身的許多優點外,源碼是可以
獲得的,而且系統從整體上也是易於理解的。進行修改和擴充很容易。這使得UNIX與
其同類的其它操作系統大不一樣。
1975年,第六版UNIX系統發行了。這是第一個在貝爾實驗室外廣為流傳的UNIX系統。
AT&T(通過West Electric Co.)開始向商業和政府用戶提供許可證。
Mike Lesk發行了他的可移植C語言庫。該庫提供了可在任何支持C語言的機器上進行
I/O的庫例程。這是用C書寫可移植代碼的重要的一步。Dennis後來重寫了該庫並稱其
為標准I/O庫(即所謂stdio)。
UNIX用戶們首次在紐約市進行會晤,有紐約城市大學的Mel Ferentz作東。當時有40人
參加。從此以後該會議每兩年舉行一次,會議是極不正式的。如果你想進行演講,你
就舉手,並且講就行了。這些會議是極好的交流bugs報告,修改和軟件的方式。每個人
都帶上兩卷磁帶參加會議,一卷是給別人的,一卷是用來錄制新東西的。
Ferentz創辦了一個稱為UNIX News的實事通訊(newsletter)的服務,免費為用戶發送消
息。後來冒出一個來自貝爾的家伙告知他不能使用UNIX的名字,於是他把它改名為
;login。隨著越來越多的人想要實事通訊的服務,Ferentz不堪免費提供這些服務了。
於是創立一個組織來處理這些費用,它被稱為USENIX。USENIX很快負起了其它的義務,
包括組織會議和軟件的分布。
遠在澳大利亞的新南威爾士大學,John Lions正在為操作系統課程准備教程。課程的
目的是UNIX實例研究,課程的筆記被出版為"A Commentary on the UNIX Operating
System"。筆記中包括了加上了Lion's注釋的整個V6 UNIX核心。基本上每一行都被解釋
了(包括那些被注明"無需理解(not expected to understand)的代碼行")。
由於引用了大量的源碼,該書的出版許可最終被撤回了。但因其已經銷售,UNIX因此比
以往更易於獲得。
1977年,Interactive Systems公司稱為首家向最終用戶出售UNIX的公司。UNIX終於成了
產品。
在同一時期有三個小組將UNIX移植到不同的機器上。Steve Johnson和Dennis Ritchie
將UNIX移植到一台Interdata 8/32機器上。澳大利亞的Wollongong大學的
Richard Miller和同事們將UNIX移植到一台Interdata 7/31上。Tom Lyon和其在普林斯
頓(Princeton)的助手們完成了到VM/370的移植。
每次移植都干的十分漂亮。具體點,所有這三台機器都與PDP-11有顯著的差異。事實上
,這正是問題之所在。許多操作系統都沒有被設計為能在多種機器上跑。類似地,許多
機器又為了某種特定的操作系統而設計。例如,如果硬件能完成進程之間的保護,操作
系統利用這功能就很有意義了。
隨著廠家提供帶有附加選項的硬件,操作系統被寫成理解這些硬件的。它們為了利用這
些特殊的硬件大多是用匯編來寫的。
Dennis和Ken的最大的突破在於他們清楚的認識到在效率和效用之間存在著折衷。如果你
能避免白手起家而完成移植的工作而且並不犧牲太多的性能,那麼這是值得的。作這樣
的決定並不困難,遠在他們用C重寫UNIX核心時他們已成功地使用類似的思想。如果用匯
編寫,UNIX可能會更快和更小,但系統變得如此的易於修改,理解和移植,犧牲速度和
內存是值得的。
UNIX很快被移植到其它類型的PDP-11上。每個都有些很有趣的功能且不斷地加大了UNIX
可支持硬件的復雜度(這些功能包括浮點處理器,可寫微碼,內存管理和保護,分離的
指令和數據空間等等)。
然而,PDP-11系列很明顯地都是基於16位地址空間的,所有的程序都實現於64Kb的大小。
很滑稽的是這到促進了小程序的編寫。有了支持合作進程的管道以及exec()之後,通過
它們將幾個小的應用連接一個大的應用。這是UNIX編程的一個特點,也許我們要感謝
PDP-11有限的地址空間。
UNIX被移植到IBM的Series1小型機上(盡管有人認為這好比是將物質與反物質結合在一起
)。Series1有與PDP-11相同的字大小,但它的字節是顛倒的。因此當系統初次啟動時它
打印出來的是"NUXI"而不是"UNIX"。從那時起,"NUXI"問題就成了字節順序問題的代名詞
1977年,加利福尼亞伯克利分校(the University of California, Berkeley)的計算機
科學系開始發行他們的Pascal解釋器。其中還包括了一些新的設備驅動程序,對核心的
修改,ex編輯器,和一個比V6的Shell更好用的Shell("ascal Shell")。這就是所謂的
1BSD(1st Berkeley Software Distribution)。
-----------------------------------------------------------------------------
UNIX演義(三)
1.3 思想
今天與UNIX相關的特地從那之後就大部分全有了。我們已談過了她的可移植性。其它的
值得吹吹的特點有:1)一致的文件,設備和進程間I/O,2)啟動異步進程的能力,3)用
其它Shell來替代默認Shell的能力,和4)層次化的文件系統。
還有些特點一樣使UNIX流行,下述特點被普遍認為是絕對不容爭辯的。使人驚訝的是,
70年代的許多系統並不是沒有這些特點,但80年代的許多系統卻拋棄了這些特點(諸如
IBM的CMS系統的flat文件系統)。
值得一提的特點是:
1) 命令和庫的一致性。這使得堆積木的方法變得非常容易。因為程序員必須假設自己
的程序的輸出是其它程序的輸入,他們不能輸出太多的空話,諸如其它系統工具中輸出
的"麻點"。UNIX中大多數程序使用標准的輸入和輸出。
庫和系統調用都似乎都提供一種做事的方法,即用最簡單的方法去解決大多數問題。
這種方法一直在核心的構造中持續,UNIX的核心小得一個程序員就可以理解整個核心。
2) 主要的文件類型是文本。例如,/etc/passwd可以用一般的文本編輯器來編輯。在大
部分其它的系統上你不得不用一個特殊的工具來讀寫這些文件。而在UNIX中,你有了編
輯器你就可以控制每一樣東西。
3) Shell可用來編程,它有著豐富的控制結構和參數傳遞機制。許多人不須為學C語言
而費心,因為Shell和已有的程序可以很容易的組合起來完成相同的功能。有趣的是Shell
的控制結構(如goto,test)其實都是用獨立的程序來實現的。
第六版的手冊還不到300頁,而且裝成一卷正合適。sh的說明有三頁長。
到1978底已有600多個UNIX安裝。大部分是大學和政府機關。
UNIX演義(四)
1.4 1979 - 第七版
1979年UNIX的第七版發行了。Version 7包括了一個完整的K&R C編譯器,它首次包括了
強制類型轉換,聯合和類型定義。系統還提供了一個更為復雜的Shell(稱為"sh"或
"Bourne shell",取自它的作者之一,Stephen Bourne)。系統支持更大的文件。由於不
懈的努力移植的結果,核心更加魯棒,系統有了更多的外設驅動程序。
第七版的程序員手冊以達到了大約400頁(仍然可以很合適地裝在一卷裡)。UNIX的其它
讀物則成為了第二和第三卷,大約各有400頁。
在貝爾實驗室,John Reiser和Tom London將V7 UNIX移植到了VAX機上。這次移植稱為
UNIX32V。在某種程度上,VAX是一個大一點的PDP-11,按這樣的理解移植工作相對容易
些。為了讓UNIX快速移植和跑得快點,VAX上的特殊硬件功能(換頁)被忽略了。雖然如此,
由於VAX比PDP-11有了相當大的地址空間(4Gb),不帶換頁功能的UNIX仍舊在實驗室裡廣
為流傳,且用了好一段時間。伯克利也獲得了該版本並作為進一步研究的基礎。
Whitesmith是第一個商業C編譯器供應商。不幸的是由於在許可證問題上不夠明確,C編
譯器的庫函數不得不故意使用不兼容的函數名和參數規范。之後,C語言的用戶接口
(函數名)被裁決為不能擁有版權,現在Whitesmith的C與UNIX兼容了。
-----------------------------------------------------------------------------
UNIX演義(五)
1.5 Politcs - 第一部分
在UNIX誕生時AT&T是一個由許多與電訊有關的公司的集合,包括Bell Telephone
Laboratories(經常稱為BTL,Bell,Bell Labs,或The Labs)和Western Electric Co.
(WECo)。由於一項早期的反托拉斯法案,AT&T被禁止參加未規范的領域的商業活動。盡
管她可以基於UNIX進行研究但她不能基於UNIX去做市場。事實上不容許進入計算機軟件
領域尚不明確,但似乎如果它有利可圖AT&T就和那個反托拉斯法案相沖突。不管怎樣,
作為商品,UNIX似乎是一個誤區。很自然,管理當局是不會資助開發一個非盈利產品的。
這就是70年代Ken和Dennis所面對的情況。
處於莫雷山(Murray Hill)的貝爾實驗室是整個UNIX開發的地點,Dennis和Ken就在這工
作,他們並不關心產品開發。他們有許多新奇有趣的玩意要和他們的新Baby玩呢!然而
這一切太別扭了,UNIX在實驗室裡如此流行,但你不能把它向外部發布。此外,沒人對
UNIX的支持負直接責任。根據Tannenbaum所述:
BTL didn't really have a distribution policy in the early days, you
got a disk with a note:
Here's your rk05,Love,Dennis
If UNIX crapped on your rk05,you'd write to Dennis for author.
最終貝爾實驗室屈服與發布UNIX的壓力。她制定了一個簡單的許可證策略:沒有支持,
沒有試用期,沒有擔保,沒有廣告,沒有bug修改,並且先付款。
然而大量的試用UNIX的人都在貝爾實驗室內部。為了支持這些項目,一個稱為USG(UNIX
Support Group)的UNIX支持小組創立了。不過還是很不幸,USG只容許提供支持,絕不
能開發。這樣的情況造成了,不管在貝爾實驗室內外用戶都在做自己的開發。而隨UNIX
一起獲得的源碼更刺激了這種情況。USG發行了幾個UNIX,它們中的大部分都只限實驗
室內部使用。
與此同時,PWB正在基於UNIX的另一個版本同時提供支持和開發。此外,PWB能夠既向內
部和外部同時發布軟件。不言自明,這兩個小組之間是多麼厭倦對方。她們都認為自己
做的事是對的,而對方做的是錯的。例如,PWB的Shell與USG的不同。
另一個UNIX的版本稱為MERT(Multi Envrionment Real-Time)。MERT與虛擬機的概念十
分相似。UNIX(甚或是她的特殊版本)可以在其上運行,並且還可使用MERT的實時工具。
在實驗室外面許多許可證獲得者都選擇使用PWB/UNIX或Ken和Dennis的研究版本的UNIX,
而在實驗室內部則使用USG的UNIX,MERT或兩者都用。(事實上還有許多的版本。例如,
LSX是一個用在LSI-11微處理機上的UNIX版本。)UNIX的多樣性很是惹人煩惱。
這時的許多UNIX許可證用戶都在PDP-11上安裝了UNIX版本中的一個或將其移植到其它硬
件上。對大多數程序員來說在UNIX上工作使他們比在其它系統上感到更滿意。這是因為:
1) UNIX自帶了完整的源碼和文檔。她自支持。你與UNIX的開發者有著十分一致的環境。
你可以自己修改UNIX。
2) UNIX很小。你可以理解代碼。大多數的算法都很簡單。你修改UNIX時對自己做了什
麼很清楚。
3) 沒有什麼要避免的擔保。既然系統沒有支持你就不損失什麼。最壞時你不過就是拿
出你的備份磁帶。而最好時你能使系統更快或加一個新功能。
4) UNIX的手冊很易讀。它們只有幾百頁,而且把它們全讀了並不困難。一個人就能完
全掌握它。
幾個成為UNIX溫床的機構是:
Rand,Hardvard and BBN
蘭德(Rand)已經開發了第一個交互式分時系統並且很快就意識到了UNIX的價值。蘭德與
BBN的Walt Bilofsky簽定共同開發一個UNIX下的全屏幕編輯器。"Rand editor",這就
是第一個UNIX下的全屏幕編輯器,而且它成為第一個在實驗室外部開發而又是必不可少
的程序。你可以想當然的認為在安裝UNIX之後的第二步就是安裝Rand editor。(說實話,
Rand editor有它自己的毛病,最可惡的是它極浪費CPU和帶寬資源。)這種情況在繼續。
你裝上UNIX之後立即裝入許多其它公共領域的工具(如,GNU Emacs,RCS,Usenet),它們
都是程序員的必備之物。甚至今天,人們也是對直接從工廠裡出來的UNIX不滿意。
在寫蘭德的編譯器的那個時候蘭德和BBN都沒有UNIX系統。她們去哈佛租機時,哈佛有一
個Version 4系統。作為回報,哈佛可以使用Rand/BBN的改進軟件。後來哈佛也開始加入
自己的改進,其中的一部分又反過來融入了Version 5。例如,Brent Byer為支持PDP-11
的分離映射而加入了分離的I/D(指令/數據)空間。
BBN繼續履行合同,她後來在伯克利的UNIX開發中起了非常重要的作用。此時BBN已參加
了Arpanet計劃(Arpanet是為美國國防部(DoD)開發的網絡)。BBN利用她們的經驗賦予
UNIX使用DoD協議來通訊的能力。這些工作後來在伯克利得到改進並捆綁在伯克利的軟件
發布中。結果使用伯克利UNIX的公司都可以免費地進行網絡互連。這導致了早期UNIX與
網絡的親密關系。
Lawrence Berkeley Laboratory - 虛擬操作系統和軟件工具計劃
在丹尼斯山(Dennis Hill)的勞侖斯實驗室裡,Deborah Scherrer和Joe Sventek拜讀了
有Brian Kernighan和P.J.Plauger合著的軟件工具"Software Tools"一書,他們覺得次
書很有價值。他們實現了書中的所有工具,包括一個Shell。更有趣的事他們並沒有在一
台跑UNIX的機器上實現了它們。
為了可移植所有的源碼都是用Fortran66寫的,Fortran66是當時在幾乎所有的機器都能得
到的唯一語言。Fortran不適於系統編程,不久Ratfor("Retional Fortran")誕生了。
Ratfor試圖用C語言的許多特點(如,控制流結構)來改進Fortran。Ratfor被實現為一個預
處理器,輸入Ratfor代碼產生Fortran代碼。Fortran代碼可由任何Fortran編譯器來編譯。
這樣任何人都可以最小的代價在自己的機器上安裝軟件工具。
他們花了不多的時間就完成將Kernighan和Plauger的工具移植到其它幾個操作系統的任務
同時,他們也掌握了對不同機器的抽象什麼是有效的什麼不是。在1979年,隨著軟件工具
計劃被認同,她與USENIX(最大的面向技術的用戶組)聯合舉辦了會議。他們的許多抽象都
與UNIX很相似,許多人都看好軟件工具計劃,並希望通過她來將UNIX引入他們已有的機器
在會議之後又有許多的移植完成了,不久一份關於虛擬操作系統(VOS)的規范出台了。VOS
定義了一個軟件工具可以棲身其上的邏輯層。如果一台機器可以支持VOS它就可以支持這
些工具。盡管VOS的某些抽象在某些機器上很難實現,一個非常好的易於移植的開發環境
--軟件工具成形。
成就的一個例子就是軟件工具支持進程間的管道--甚至是許多根本不提供進程間通訊和多
任務的系統都可以。怎麼實現的呢?工具使用臨時文件來模擬管道。並發並不是必要的。
它可由程序鏈來模擬。但最終的結果是一樣的,用戶最終得到與UNIX工具模式一樣的結果
VOS環境非常成功,至今我們還在用。VOS將UNIX的許多好的想法或思想帶到了其它的操作
系統中。很多廠商都將VOS的一部分集成到他們自己的操作系統中。原始的VOS的源碼是公
開的。
伯克利(Berkeley)
從很早以來加州大學伯克利分校計算機科學系(又稱"伯克利"或"伯斯克利")就和UNIX打交
道。他們的許多工作就被發布到許多其他單位。1979間Ken曾在伯克利教授操作系統。在
他逗留期間他將UNIX移植到了PDP-11/70上,這是一台可以支持多用戶的機器。他的演講
和工作促使了許多學生參加到UNIX的開發中。
在同一時期,DARPA(DoD's Advanced Research Projects Agency)正在為進行AI,VLSI和
計算機視覺的研究尋找一個通用的計算環境,減少經費和方便開發當然也是追求目標。
UNIX的小巧靈活和業已證明的可移植性使其成為一個不錯的候選對象。美中不足的是她缺
少網絡、虛存和靈活的進程間通信機制。UNIX的主要競爭對手是VMS,她是由DEC公司為其
VAX系列開發的。VAX被認為是無可挑剔的,它是首款超級小型機,它提供對VMS虛存的支
持。
PDP-11系列在學術界是極受推崇的,許多人對DEC非常滿意。然而VMS有不少缺點。DARPA
及其關注DEC公司是否能為他們提出的改動負責。畢竟那是個專用系統。最後他們選中了
UNIX。
DARPA尋求某個單位為進行他們的UNIX開發計劃。除了伯克利,CMU(卡耐基梅隆大學)和
BBN公司也是重點考慮的對象。那時伯克利的Bill Joy已在為支持VAX上的換頁機制而修改
核心了。伯克利最終成為主要的實現單位,同時貝爾實驗室,CMU,MIT,Stanford和BBN
的代表組成DARPA指導委員會統觀整個開發計劃。這些機構的工作對伯克利的UNIX設計是
非常之重要的。
貝爾實驗室答應伯克利,如果客戶有從貝爾實驗室得到的源碼許可證,伯克利就可向他們
分布伯克利的源碼。也就是說,如果你想獲得伯克利的發布,你必須從貝爾實驗室獲得相
應的源碼許可證。由於貝爾實驗室有一大捆發布,為了獲得相應的伯克利發布許可證不得
不更換好幾次。
起先,伯克利並不重寫UNIX,他們僅在一個稱為32V的版本上做些功能的改動和增強。32V
是32位VAX上的UNIX。移植工作是有貝爾實驗室的研究人員完成的。為簡單起見,他們只
把VAX當作一台大的PDP-11來看,忽略了被稱為"虛存"的機制。伯克利的研究人員不久就將
虛存加入到UNIX中,該系統稱為3BSD(和1980年的4BSD)。VAX可以使程序訪問多達1Gb的地
址空間,而物理存儲才僅1Mb。
虛存對用戶來說是無法抗拒。由於32V不支持虛存,貝爾實驗室外的用戶均采用伯克利的
UNIX。憑借這一系統伯克利的擴充廣為人知,且被認為是UNIX的一個裡程碑。特別值得一
提的是,C Shell,curses,termcap,vi和作業控制又被Version 7(以及後來的System
III)融入,現在在非純貝爾實驗室的發布中不難找到這些功能。這些程序被稱為伯克利
擴充,如"我們的系統運行System III外加伯克利擴充。"更新一些的伯克利擴充(來自
4.2BSD)包括網絡(DARPA Internet)支持和自動核心配置。
伯克利向UNIX中加入了許多很有用的東西,但有一件他們不可能完成的是提供支持。大學
並不想步入商界並向客戶提供支持。這畢竟只是一個研究性項目(由納稅人的錢提供基金)
向Dennis的友善的rk05s標注一樣,早期的伯克利磁帶也有Bill Joy的一句提示:"這是一
盒裝滿了二進制位的磁帶,"暗示不提供任何擔保並且所以的抱怨將被定向到/dev/null。
可事實上,伯克利的研究人員對修改Bug相當負責。他們通過電子郵件來維護一個Bug清單
他們修改了無數Bug並將其他人的修改也融入了他們的代碼。最後成立了一家公司來通過
對伯克利發布的支持,她稱為Mt. Xinu。他們的口號是,"We know UNIX forwards and
backwards",它就是公司名稱的來歷,"UNIX(tm)"倒過來就是"Xt. Xinu。"
盡管不同的BSD版本有著明顯的差異,但他們的軟件發行一直被稱為"4.x BSD"。如果不是
大學當局強制要求向所以"客戶"重新發放許可證,BSD一定會重新標注4.2為5.0的。但既然
如此,BSD的代碼包括了新版的AT&T的軟件,BSD就不得不這樣做了。
盡管AT&T最新的幾個版本有明顯的變化,但AT&T似乎也一直沿用"System V"。AT&T大概花
了太多的錢來說:"UNIX System V。從AT&T開始,從現在開始,把她當作標准吧。"換個
名字似乎是沒有意義的事。AT&T將推出她的新的"主打"版本(即UNIX System V Release
4.0)。
DEC(Digital Equipment Corporation,數字設備公司)
DEC一直處於非常尴尬的位置。所有的早期UNIX用戶都在DEC的硬件平台(PDP-11和VAX)上
運行UNIX。然而DEC並不對UNIX提供支持。這對於硬件類的bug來說是個非常嚴重的問題。
常常都是DEC的檢測程序和DEC自己的操作系統運行正常,但UNIX卻不能。你得靠自己。
不管怎樣DEC內部總有一伙人對UNIX感興趣。而且這一情況越來越明顯,即UNIX在利潤報告
和損失估計中越來越不可忽略。至少有一件事用戶是滿意的,UNIX給用戶選擇軟件和外設
很大自由。DEC的系統則強制你必須使用為DEC設計的軟件和終端。相對而言,UNIX的限制
少一些。
當UNIX被移植到其他機器時,DEC受了最後一擊。她認識到,如果可以選擇的話,用戶寧願
買可以跑他們感興趣的操作系統的機器。DEC現在全面對UNIX(在市場上稱為ULTRIX)提供支持
。但DEC更願意用戶選擇他們的專有操作系統,VMS,它被鎖定在DEC的硬件上。DEC並不希
拒絕大量的UNIX用戶對DEC的硬件感興趣。
截至1986年,在DEC的硬件上大約有6000個DEC ULTRIX的許可證,14,000 4.x BSD的許可證和
20,000 AT&T System V的許可證。從此DEC對不管是新舊機器都提供UNIX支持。有趣的是,
AT&T不在對基於DEC硬件的UNIX提供支持。
其他
除了上述這些單位之外,許多大學和研究機構都獨創了許多的UNIX應用和擴展。這些座落
加拿大,澳大利亞,新西蘭,歐洲和全美國的機構發行他們自己的版本或發行帶有自己改
的伯克利或AT&T版本。某些變化得太大了,以至於不能在稱為UNIX了。UNIX被極大地豐富恕
許多單位並沒興趣發布自己的軟件。他們將自己的改動寄給伯克利(而伯克利似乎來者不拒)。
由此伯克利無意間享受了這些榮譽。
-----------------------------------------------------------------------------
UNIX演義(六)
1.6 Politics - 第二部分
UNIX的源碼被視為商業秘密. 如果你不簽定許可證就使用UNIX的源碼, UNIX就不再是什麼
商業秘密了, 你也就可以無視AT&T的皇權而發售UNIX了(當然, 你可能要付給你的律師比
簽許可證更多的錢來打贏官司). AT&T警惕地保護著UNIX的源碼, 使它保持商業秘密的狀態.
不過AT&T已經比僅是UNIX作為教育目的走得更遠了. 用於教育目的的許可證非常便宜, 學
生不必簽許可證和不在乎協議就可以閱讀源碼. 雖然如此, 作為鑒定許可證的一方, 如果
某人"unauthorized use or distribution of the code, methods, and concepts
contained in or derived fromt the UNIX product", 你和你的公司將為此而負法律責任.
哦, UNIX的手冊也在其列.
AT&T的位置很古怪, 她雖然不是軟件商但卻發行軟件許可證. 不用問, 這許可證與其他許
可證是不同的. 早期的許可證是由Western Electric Co.發行的, AT&T的許可證發行部門
就座落在那. 現在, 許可證由AT&T直接發行.
早期的許可證是源碼許可證. 你可以得到所有的為不同的PDP-11而設計的完整源碼. 對商
業機構的價格是$20,000. 如果你有不只一台機器, 你必須為每台機器再購買binary許可證.
如果你不能再把他們發售的話, $8,000可是相當昂貴的. 相反, 教育機構只需付幾百美元
就可買下源碼許可證, 這筆錢僅夠貝爾實驗室支付管理費用和購買磁帶.
在這一點上, UNIX被稱為"as is". 簡便AT&T發行binary許可證, 他們也不自己發售它. 某
家公司想運行UNIX就必須購買至少一份源碼許可證並且找一些專家. 許多公司和顧問冒出
來填補這一空缺. 第一家對UNIX提供商業支持的是於1977年成立的Interactive Systems
Corp. 她的產品稱為IS/1, 運行在PDP-11系列上(當然應該是它).
在1980年, AT&T最終發行了distribution binary許可證. 根據此許可證生產的二進制代碼
可由開發商向其他公司發售. 該許可證比早期的binary許可證要便宜得多--大概花費
$1,500. 首家使用該許可證的是Onyx Systems公司.
很有趣, Oynx系統是用Zilog公司的Z8000構造的, 一台微處理器. 它也是第一台基於微處
理器的UNIX系統, 如果它使用早期的許可證, 可能它的價格就很貴, 它也就不可能賣出去
了. 一年內, 又有幾家公司推出了基於微處理器的UNIX系統. 價格持續在很低的$10,000
左右, 以前不得不考慮CP/M, MP/M和其他便宜的基於微處理器的系統的公司也可以購買
UNIX了.
Copyright © Linux教程網 All Rights Reserved