了解過(guò)去,我們才能知其然,更知所以然??偨Y過(guò)去,我們才會(huì )知道我們明天該如何去規劃,該如何去走。在時(shí)間的滾輪中,許許多的東西就像流星一樣一閃而逝,而有些東西卻能經(jīng)受著(zhù)時(shí)間的考驗散發(fā)著(zhù)經(jīng)久的魅力,讓人津津樂(lè )道,流傳至今。要知道明天怎么去選擇,怎么去做,不是盲目地跟從今天各種各樣琳瑯滿(mǎn)目前沿技術(shù),而應該是去 —— 認認真真地了解和回顧歷史。
Unix是目前還在存活的操作系統的元老了,走過(guò)了近乎40年的歷程。在技術(shù)更新如此迅速的計算機世界的今天,Unix始終保持它那神圣的光環(huán),它那曲折和令人嘆息的歷史,以及由它引發(fā)的思想變革,對當今計算機文化造成的深遠影響,近40年所產(chǎn)生的人和事,讓它成為了一個(gè)傳奇,不能不讓人為之驚嘆。
這是一段所有從事計算機行業(yè)人員尤其是軟件開(kāi)發(fā)人員需要了解的歷史。Unix的傳奇歷史是整個(gè)計算機世界文化最具代表性的,它對整個(gè)計算機世界文化的影響也是最巨大,最深遠的。他給人帶來(lái)的不單單的對過(guò)去的回味,更為我們帶來(lái)了計算機世界的新思潮。
了解這段的歷史的人,才能體會(huì )計算機世界變遷過(guò)程中的是是非非,才能了解計算機世界中的文化,從而才能參與到整個(gè)計算機革命的大潮中。希望這段歷史,這篇文章能讓你感受到計算機世界那強力的脈搏,從而讓你踏上這條令人充滿(mǎn)激情的道路。
下面是本文的大綱:
上篇
Unix起源
Unix分裂
Unix的法律糾紛
GNU開(kāi)源組織
Linux橫空出世
Linux今天的領(lǐng)袖
下
Unix的歷史教訓
Unix 家族譜
Unix的特點(diǎn)
Unix的影響和哲學(xué)
Unix痛恨者手冊
Unix 起源
回顧Unix歷史,我們就要說(shuō)一下一個(gè)叫MULTICS(Multiplexed Information and Computing Service)的項目。上世紀六十年代時(shí),大部份計算機都是采用批處理(Batch Processing)的方式(也就是說(shuō),當作業(yè)積累一定數量的時(shí)候,計算機才會(huì )進(jìn)行處理)。那時(shí),我們熟知的美國電話(huà)及電報公司(American Telephone and Telegraph Inc.;AT&T)、通用電器公司(General Electrics;G.E.)及麻省理工學(xué)院(Massachusetts Institute of Technology;MIT)計劃合作開(kāi)發(fā)一個(gè)多用途(General-Purpose)、分時(shí)(Time-Sharing)及多用戶(hù)(Multi-User)的操作系統,也就是這個(gè)MULTICS,其被設計運行在GE-645大型主機上。不過(guò),這個(gè)項目由于太過(guò)復雜,整個(gè)目標過(guò)于龐大,糅合了太多的特性,進(jìn)展太慢,幾年下來(lái)都沒(méi)有任何成果,而且性能都很低。于是到了1969年2月,貝爾實(shí)驗室(Bell Labs)決定退出這個(gè)項目。
熟悉這段歷史的人都知道,貝爾實(shí)驗室中的有個(gè)叫Ken Thompson的人,他為MULTICS這個(gè)操作系統寫(xiě)游戲了個(gè)叫“Space Travel”的游戲,在MULTICS上經(jīng)過(guò)實(shí)際運行后,他發(fā)現游戲速度很慢而且耗費昂貴 —— 每次運行會(huì )花費75美元。退出這個(gè)項目以后。他為了讓這個(gè)游戲能玩,所以他找來(lái)Dennis Ritchie為這個(gè)游戲開(kāi)發(fā)一個(gè)極其簡(jiǎn)單的操作系統。這就是后來(lái)的Unix。(值得一提的是,當時(shí)他們本想在DEC-10上寫(xiě),后來(lái)沒(méi)有申請到,只好在實(shí)驗室的墻角邊找了一臺被人遺棄的Digital PDP-7的迷你計算機進(jìn)行他們的計劃,這臺計算機上連個(gè)操作系統都沒(méi)有,于是他們用匯編語(yǔ)言?xún)H一個(gè)月的時(shí)間就開(kāi)發(fā)了一個(gè)操作系統的原型)他們的同事Brian Kernighan非常不喜歡這個(gè)系統,嘲笑Ken Thompson說(shuō):“你寫(xiě)的系統好真差勁,干脆叫Unics算了。”Unics的名字就是相對于MULTICS的一種戲稱(chēng),后業(yè)改成了Unix。于是,Unix就在這樣被游戲和玩笑創(chuàng )造了,當時(shí)是1969年8月。也就是這一年,Linux之父Linus Torvalds在芬蘭出生了。
1971年,Ken Thompson寫(xiě)了充分長(cháng)篇的申請報告,申請到了一臺PDP-11/24的機器。于是Unix第一版出來(lái)了。在一臺PDP-11/24的機器上完成。這臺電腦只有24KB的物理內存和500K磁盤(pán)空間。Unix占用了12KB的內存,剩下的一半內存可以支持兩用戶(hù)進(jìn)行Space Travel的游戲。而著(zhù)名的fork()系統調用也就是在這時(shí)出現的。
到了1973年的時(shí)候,Ken Thompson 與Dennis Ritchie感到用匯編語(yǔ)言做移植太過(guò)于頭痛,他們想用高級語(yǔ)言來(lái)完成第三版,對于當時(shí)完全以匯編語(yǔ)言來(lái)開(kāi)發(fā)程序的年代,他們的想法算是相當的瘋狂。一開(kāi)始他們想嘗試用Fortran,可是失敗了。后來(lái)他們用一個(gè)叫BCPL(Basic Combined Programming Language)的語(yǔ)言開(kāi)發(fā),他們整合了BCPL形成B語(yǔ)言,后來(lái)Dennis Ritchie覺(jué)得B語(yǔ)言還是不能滿(mǎn)足要求,就是就改良了B語(yǔ)言,這就是今天的大名鼎鼎的C語(yǔ)言。于是,Ken Thompson 與Dennis Ritchie成功地用C語(yǔ)言重寫(xiě)了Unix的第三版內核。至此,Unix這個(gè)操作系統修改、移植相當便利,為Unix日后的普及打下了堅實(shí)的基礎。而Unix和C完美地結合成為一個(gè)統一體,C與Unix很快成為世界的主導。
Unix的第一篇文章 “The UNIX Time Sharing System”由Ken Thompson和Dennis
Ritchie于1974年7月的 the Communications of the ACM發(fā)表。這是UNIX與外界的首次接觸。結果引起了學(xué)術(shù)界的廣泛興趣并對其源碼索取,所以,Unix第五版就以“僅用于教育目的”的協(xié)議,提供給各大學(xué)作為教學(xué)之用,成為當時(shí)操作系統課程中的范例教材。各大學(xué)公司開(kāi)始通過(guò)Unix源碼對Unix進(jìn)行了各種各樣的改進(jìn)和擴展。于是,Unix開(kāi)始廣泛流行。

Ken Thompson & Dennis Ritchie,
Unix分裂
1978年,對 Unix而言是革命性的一年;因為學(xué)術(shù)界的老大柏克利大學(xué) (UC Berkeley),推出了一份以第六版為基礎,加上一些改進(jìn)和新功能而成的 Unix。這就是著(zhù)名的“1 BSD(1st Berkeley Software Distribution)”,開(kāi)創(chuàng )了Unix的另一個(gè)分支:BSD 系列。 同時(shí)期,AT&T成立USG(Unix Support Group),將 Unix變成商業(yè)化的產(chǎn)品。從此,BSD的 Unix 便和AT&T 的Unix 分庭抗禮,Unix就分為System IV和4.x BSD這兩大主流,各自蓬勃發(fā)展。
1979年發(fā)布的Unix 第七版被稱(chēng)為是“最后一個(gè)真正的Unix”,這個(gè)版本的Unix內核只有40K bytes。后來(lái)這個(gè)版本被移植到VAX機上(我在大學(xué)時(shí)學(xué)習C語(yǔ)言時(shí)用過(guò)這個(gè)VAX機,我還記得那時(shí)上VAX機最大的愛(ài)好就是使用talk命令和別人聊天,呵呵)。20世紀80年代相繼發(fā)布的8、9、10版本只授權給了少數大學(xué)。
1982年,AT&T基于版本7開(kāi)發(fā)了UNIX System Ⅲ的第一個(gè)版本,這是一個(gè)商業(yè)版本僅供出售。為了解決混亂的UNIX版本情況,AT&T綜合了其他大學(xué)和公司開(kāi)發(fā)的各種UNIX,開(kāi)發(fā)了UNIX System V Release 1。這個(gè)新的UNIX商業(yè)發(fā)布版本不再包含源代碼,所以加州大學(xué)Berkeley分校繼續開(kāi)發(fā)BSD UNIX,作為UNIX System III和V的替代選擇。BSD對UNIX最重要的貢獻之一是TCP/IP。BSD 有8個(gè)主要的發(fā)行版中包含了TCP/IP:
同時(shí),其他一些公司也開(kāi)始為其自己的小型機或工作站提供商業(yè)版本的UNIX系統,有些選擇System V作為基礎版本,有些則選擇了BSD。BSD的一名主要開(kāi)發(fā)者,Bill Joy,在BSD基礎上開(kāi)發(fā)了SunOS,并最終創(chuàng )辦了Sun Microsystems。

Bill Joy
1991年,一群BSD開(kāi)發(fā)者(Donn Seeley、Mike Karels、Bill Jolitz 和 Trent Hein)離開(kāi)了加州大學(xué),創(chuàng )辦了Berkeley Software Design, Inc (BSDI)。BSDI是第一家在便宜常見(jiàn)的Intel平臺上提供全功能商業(yè)BSD UNIX的廠(chǎng)商。后來(lái)Bill Jolitz 離開(kāi)了BSDI,開(kāi)始了386BSD的工作。386BSD被認為是FreeBSD、OpenBSD 和 NetBSD、DragonFlyBSD的先輩。
這是一個(gè)AT&T妄圖私有化的Unix的時(shí)代。為了私有化Unix,1986年IEEE指定了一個(gè)委員會(huì )制定了一個(gè)一個(gè)開(kāi)放作業(yè)系統的標準,稱(chēng)為 POSIX (Portable Operating Systems Interface)。最后加上個(gè)X,不知道是為了好聽(tīng),還是因為這本質(zhì)上是UNIX的標準。當然,AT&T的Unix取得了這個(gè)標準制訂戰爭的勝利,還取得了Unix這個(gè)注冊商標。此時(shí)BSD的擁護者自喻為冷酷無(wú)情的公司帝國的反抗軍。就銷(xiāo)售量來(lái)說(shuō),AT&T UNIX始終趕不上BSD/Sun。到1990年,AT&T與BSD版本已難明顯區分,因為彼此都有采用對方的新發(fā)明。
這段時(shí)期,從實(shí)驗室出來(lái)的被全世界所分享的Unix,正處于被私有化的關(guān)鍵時(shí)期。
Unix的法律糾紛
Berkeley Software Design, Inc(BSDI)很快就與AT&T的UNIX Systems Laboratories(USL)附屬公司產(chǎn)生了法律糾紛,USL是AT&T注冊的公司。AT&T為了擁有System V版權,以及Unix商標,為了壟斷Unix,1992年,USL正式對BSDI提起訴訟,說(shuō)BSD剽竊他的源碼。而最終了結了好評如潮的BSD系統。
由于最后判決懸而未決,這樁法律訴訟將BSD后裔的開(kāi)發(fā),特別是自由軟件,延遲了兩年,這導致沒(méi)有法律問(wèn)題的Linux內核獲得了極大的支持。Linux跟386BSD的開(kāi)發(fā)幾乎同時(shí)起步,Linus說(shuō),當時(shí)如果有自由的基于386的Unix-like操作系統,他就可能不會(huì )創(chuàng )造Linux。盡管無(wú)法預料這給以后的軟件業(yè)究竟造成了什么樣的影響(如果沒(méi)有這個(gè)法律糾紛,很有可能沒(méi)有今天的革命性的Linux),但有一點(diǎn)可以肯定,Linux更加豐富了這塊土壤。
這場(chǎng)官司一直打到 AT&T將自己的Unix系統實(shí)驗室賣(mài)掉,新接手的Novell公司采取了一種比較開(kāi)明的做法,允許BSDI自由發(fā)布自己的BSD,但是前提是必須將來(lái)自于AT&T的代碼完全刪除,于是誕生了4.4 BSD Lite版,由于這個(gè)版本不存在法律問(wèn)題,4.4BSD Lite成為了現代BSD系統的基礎版本。
這樁訴訟最終在1994年1月了結,更多地滿(mǎn)足了BSDI的利益。伯克利套件的18,000個(gè)文件中,只有3個(gè)文件要求刪除,另有70個(gè)文件要求修改,并顯示USL的版權說(shuō)明。這項調解另外要求,USL不得對4.4BSD提起訴訟,不管是用戶(hù)還是BSDI代碼的分發(fā)者。于是,BSD Unix走上了復興的道路。BSD的開(kāi)發(fā)也走向了幾個(gè)不同的方向,并最終導致了FreeBSD、OpenBSD和NetBSD的出現。
從AT&T意識到了Unix的商業(yè)價(jià)值,不再將Unix源碼授權給學(xué)術(shù)機構以來(lái),到以后的幾十年,Unix仍在不斷變化,其版權所有者不斷變更,授權者的數量也在增加。Unix的版權曾經(jīng)為AT&T所有,之后Novell擁有了Unix,再之后Novell又將版權出售給了SCO(這一事實(shí)雙方尚存在爭議)。有很多大公司在取得了Unix的授權之后,開(kāi)發(fā)了自己的Unix產(chǎn)品。(幾年前,據傳聞微軟為了限制Linux,微軟讓SCO到法院告Linux剽竊其源碼)
由于Unix是由C語(yǔ)言寫(xiě)的,所以修改和移植都很容易,因此,很多商業(yè)公司及學(xué)術(shù)機構均加入這個(gè)操作系統的研發(fā),各個(gè)不同版本的Unix也開(kāi)始蓬勃發(fā)展。這才產(chǎn)生了今天這么多的各式各樣的Unix衍生產(chǎn)品。如AIX、Solaris、HP-UX、IRIX、OSF、Ultrix等等。(這些商業(yè)化的Unix基本上都是源于AT&T授權的Unix System V)
Unix開(kāi)源組織
AT&T的這種商業(yè)態(tài)度,讓當時(shí)許許多的Unix的愛(ài)好者和軟件開(kāi)發(fā)者們感到相當的痛心和憂(yōu)慮,他們認為商業(yè)化的種種限制并不利于產(chǎn)生的發(fā)展,相反還能導制產(chǎn)品出現諸多的問(wèn)題。隨著(zhù)商業(yè)化Unix的版本的種種限制和諸多問(wèn)題,引起了大眾的不滿(mǎn)和反對。于是,大家開(kāi)始有組織地結成“反叛聯(lián)盟”以此對抗欺行罷市的AT&T等商業(yè)化行為。
另一方面,關(guān)于“大教堂”(集權、封閉、受控、保密)和“集市”(分權、公開(kāi)、精細的同僚復審)兩種開(kāi)發(fā)模式的對比成為了新思潮的中心思想。這個(gè)新思潮對IT業(yè)產(chǎn)生了非常深遠影響。為整個(gè)計算機世界帶來(lái)了革命性的價(jià)值觀(guān)。

為了這個(gè)理想,Richard Stallman于1984年創(chuàng )業(yè)了GNU,計劃開(kāi)發(fā)一套與Unix相互兼容的的軟件。1985 年 Richard Stallman 又創(chuàng )立了自由軟件基金會(huì )(Free Software Foundation)來(lái)為 GNU 計劃提供技術(shù)、法律以及財政支持。盡管 GNU 計劃大部分時(shí)候是由個(gè)人自愿無(wú)償貢獻,但 FSF 有時(shí)還是會(huì )聘請程序員幫助編寫(xiě)。當 GNU 計劃開(kāi)始逐漸獲得成功時(shí),一些商業(yè)公司開(kāi)始介入開(kāi)發(fā)和技術(shù)支持。當中最著(zhù)名的就是之后被 Red Hat 兼并的 Cygnus Solutions。
GNU組織的建立,延續了當年Unix剛出現時(shí)的情形,并為這種情形建立了可靠的法律和財務(wù)保障。GNU 工程十幾年以來(lái), 已經(jīng)成為一個(gè)對軟件開(kāi)發(fā)主要的影響力量, 創(chuàng )造了無(wú)數的重要的工具。例如:強健的編譯器,有力的文本編輯器,甚至一個(gè)全功能的操作系統。從那時(shí)開(kāi)始,許多程序員聚集起來(lái)開(kāi)始開(kāi)發(fā)一個(gè)自由的、高質(zhì)量、易理解的軟件,讓這使得Unix社區生機勃勃,一派繁榮景象。
自90年代發(fā)起這個(gè)計劃以來(lái),GNU 開(kāi)始大量的產(chǎn)生或收集各種系統所必備的組件,像是——函數庫(libraries)、編譯器(compilers)、調式工具(debugs)、文本編輯器(text editors)、網(wǎng)站服務(wù)器(web server),以及一個(gè)Unix的使用者接口(Unix shell)等等,等等。但由于種種原因,GNU一直沒(méi)有開(kāi)發(fā)操作系統的kernel。正當Richard Stallman在為操作系統內核傷腦筋的時(shí)候,Linux出現了。
Linux橫空出世

從一開(kāi)始,Linus就決定自由擴散Linux,包括原代碼,隨即Linux引起黑客們(hacker)的注意,通過(guò)計算機網(wǎng)絡(luò )加入了Linux的內核開(kāi)發(fā)。Linux傾向于成為一個(gè)黑客的系統——直到今天,在Linux社區里內核的開(kāi)發(fā)被認為是真正的編程。由于一批高水平黑客的加入,使Linux 發(fā)展迅猛,幾乎一兩個(gè)禮拜就有新版或修正版的出現,到1993年底94年初,Linux 1.0終于誕生了!Linux 1.0已經(jīng)是一個(gè)功能完備的操作系統,而且內核寫(xiě)得緊湊高效,可以充分發(fā)揮硬件的性能,在
Linux 的歷史是和GNU緊密聯(lián)系在一起的。從1983年開(kāi)始的GNU計劃致力于開(kāi)發(fā)一個(gè)自由并且完整的類(lèi)Unix操作系統,包括軟件開(kāi)發(fā)工具和各種應用程序。到1991年 Linux 內核發(fā)布的時(shí)候,GNU已經(jīng)幾乎完成了除了系統內核之外的各種必備軟件的開(kāi)發(fā)。在 Linus Torvalds 和其它開(kāi)發(fā)人員的努力下,GNU組件可以運行于Linux內核之上。整個(gè)內核是基于 GNU 通用公共許可,也就是GPL(GNU General Public License,GNU通用公共許可證)的,但是Linux內核并不是GNU 計劃的一部分。1994年3月,Linux1.0版正式發(fā)布,Marc Ewing成立了 Red Hat 軟件公司,成為最著(zhù)名的 Linux 分銷(xiāo)商之一。
嚴格來(lái)講,Linux這個(gè)詞本身只表示Linux內核,但在實(shí)際上人們已經(jīng)習慣了用Linux來(lái)形容整個(gè)基于Linux內核,并且使用GNU 工程各種工具和應用程序的操作系統(也被稱(chēng)為GNU/Linux)?;谶@些組件的Linux軟件被稱(chēng)為Linux發(fā)行版。一般來(lái)講,一個(gè)Linux發(fā)行套件包含大量的軟件,比如軟件開(kāi)發(fā)工具,數據庫,Web服務(wù)器(例如Apache),X Window,桌面環(huán)境(比如GNOME和KDE),辦公套件(比如OpenOffice.org),等等。
1991至1995年間,Linux從概念型的0.1版本內核原型,發(fā)展成為能夠在性能和特性上均堪媲美專(zhuān)有Unix的操作系統,并且在連續正常工作時(shí)間等重要統計數據上打敗了這些Unix中的絕大部分。1995年,Linux找到了自己的殺手級應用——開(kāi)源的web服務(wù)器Apache。就像Linux,Apache出眾地穩定和高效。很快,運行Apache的Linux機器成了全球ISP平臺的首選。約60%的網(wǎng)站選用Apache,輕松擊敗了另兩個(gè)主要的專(zhuān)有型競爭對手。今天的LAMP(Linux , Apache, MySQL, PHP)已經(jīng)成為了架構Web服務(wù)器的主要首選。
現如今的Linux不但可以裝在幾乎所有的主流服務(wù)器上,當然也包括桌面的X86系統中。其還常常被用于嵌入式系統,機頂盒、手機、交換機、游戲機、PDA、網(wǎng)絡(luò )交換機、路由器、等等,都是因為Linux那精彩的內核。
Linux的出現,不僅僅給世界帶來(lái)了一個(gè)免費的操作系統,也不僅僅是對Unix自由、共享的文化的延續,它的出現帶給了計算機世界自Unix、GNU以來(lái)更為成熟的思想和文化。
Linux今天的領(lǐng)袖
Linux和GNU關(guān)系是比較微妙的。那時(shí),自由軟件基金會(huì )編寫(xiě)的用戶(hù)軟件工具包鋪平了一條擺脫高成本專(zhuān)有軟件開(kāi)發(fā)工具的前進(jìn)道路。意識服從經(jīng)濟,而不是領(lǐng)導:一些新手加入了RMS的革命運動(dòng),高舉GPL大旗,另一些人則更認同整體意義上的Unix傳統,加入了反對GPL的陣營(yíng),但其他大部分人置身事外,一心編碼。
Linus Torvalds巧妙地跨越了GPL和反GPL的派別之爭。他利用GNU工具包搭起了自創(chuàng )的Linux內核,用GPL的傳染性質(zhì)保護它,但拒絕認同Richard Stallman的許可協(xié)議反映的思想體系計劃。Linus Torvalds明確表示他認為自由軟件一般情況下更好,但他偶爾也用專(zhuān)有軟件。即使在他自己的事業(yè)中,他也拒絕成為狂熱分子。這一點(diǎn)極大地吸引了大多數黑客,他們雖然早就反感Richard Stallman的言辭,但他們的懷疑論一直缺個(gè)有影響力或者令人信服的代言人。而Linus Torvalds正好充當了這一角色。

今天,我們也說(shuō)不清楚是GNU Linux還是Linux GNU。Linux既不排斥開(kāi)源,也不排斥商業(yè)化,Linus認為好的軟件是需要免費和商業(yè)化共同推進(jìn)的。正是這種革命性的想法,造就了今天的Linux火紅的局面。Linux就像一股清泉流入了所有人的心中,引發(fā)了很多的啟迪和思考。
更多文章請訪(fǎng)問(wèn)我的Blog: http://blog.csdn.net/haoel
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1542340
聯(lián)系客服