Unix
傳奇(上篇)
?
陳皓
了解過去,我們才能知其然,更知所以然。總結過去,我們才會知道我們明天該如何去規劃,該如何去走。在時間的滾輪中,許許多的東西就像流星一樣一閃而逝,而有些東西卻能經受著時間的考驗散發著經久的魅力,讓人津津樂道,流傳至今。要知道明天怎么去選擇,怎么去做,不是盲目地跟從今天各種各樣琳瑯滿目前沿技術,而應該是去 —— 認認真真地了解和回顧歷史。
Unix 是目前還在存活的操作系統的元老了,走過了近乎 40 年的歷程。在技術更新如此迅速的計算機世界的今天, Unix 始終保持它那神圣的光環,它那曲折和令人嘆息的歷史,以及由它引發的思想變革,對當今計算機文化造成的深遠影響,近 40 年所產生的人和事,讓它成為了一個傳奇,不能不讓人為之驚嘆。
這是一段所有從事計算機行業人員尤其是軟件開發人員需要了解的歷史。 Unix 的傳奇歷史是整個計算機世界文化最具代表性的,它對整個計算機世界文化的影響也是最巨大,最深遠的。他給人帶來的不單單的對過去的回味,更為我們帶來了計算機世界的新思潮。
了解這段的歷史的人,才能體會計算機世界變遷過程中的是是非非,才能了解計算機世界中的文化,從而才能參與到整個計算機革命的大潮中。希望這段歷史,這篇文章能讓你感受到計算機世界那強力的脈搏,從而讓你踏上這條令人充滿激情的道路。
下面是本文的大綱:
?
上篇
Unix
起源
Unix
分裂
Unix
的法律糾紛
GNU
開源組織
Linux
橫空出世
Linux
今天的領袖
?
下
Unix
的歷史教訓
Unix 家
族譜
Unix
的特點
Unix
的影響和哲學
Unix 痛恨者手冊
Unix 起源
回顧 Unix 歷史,我們就要說一下一個叫 MULTICS ( Multiplexed Information and Computing Service )的項目。上世紀六十年代時,大部份計算機都是采用批處理( Batch Processing )的方式(也就是說,當作業積累一定數量的時候,計算機才會進行處理)。那時,我們熟知的美國電話及電報公司( American Telephone and Telegraph Inc. ; AT&T )、通用電器公司( General Electrics ; G.E. )及麻省理工學院( Massachusetts Institute of Technology ; MIT )計劃合作開發一個多用途( General-Purpose )、分時( Time-Sharing )及多用戶( Multi-User )的操作系統,也就是這個 MULTICS ,其被設計運行在 GE-645 大型主機上。不過,這個項目由于太過復雜,整個目標過于龐大,糅合了太多的特性,進展太慢,幾年下來都沒有任何成果,而且性能都很低。于是到了 1969 年 2 月,貝爾實驗室( Bell Labs )決定退出這個項目。
熟悉這段歷史的人都知道,貝爾實驗室中的有個叫 Ken Thompson 的人,他為 MULTICS 這個操作系統寫游戲了個叫“ Space Travel ”的游戲,在 MULTICS 上經過實際運行后,他發現游戲速度很慢而且耗費昂貴 —— 每次運行會花費 75 美元。退出這個項目以后。他為了讓這個游戲能玩,所以他找來 Dennis Ritchie 為這個游戲開發一個極其簡單的操作系統。這就是后來的 Unix 。(值得一提的是,當時他們本想在 DEC-10 上寫,后來沒有申請到,只好在實驗室的墻角邊找了一臺被人遺棄的 Digital PDP-7 的迷你計算機進行他們的計劃,這臺計算機上連個操作系統都沒有,于是他們用匯編語言僅一個月的時間就開發了一個操作系統的原型)他們的同事 Brian Kernighan 非常不喜歡這個系統,嘲笑 Ken Thompson 說:“你寫的系統好真差勁,干脆叫 Unics 算了。” Unics 的名字就是相對于 MULTICS 的一種戲稱,后業改成了 Unix 。于是, Unix 就在這樣被游戲和玩笑創造了,當時是 1969 年 8 月。也就是這一年, Linux 之父 Linus Torvalds 在芬蘭出生了。
1971 年, Ken Thompson 寫了充分長篇的申請報告,申請到了一臺 PDP-11/24 的機器。于是 Unix 第一版出來了。在一臺 PDP-11/24 的機器上完成。這臺電腦只有 24KB 的物理內存和 500K 磁盤空間。 Unix 占用了 12KB 的內存,剩下的一半內存可以支持兩用戶進行 Space Travel 的游戲。而著名的 fork() 系統調用也就是在這時出現的。
到了 1973 年的時候, Ken Thompson 與 Dennis Ritchie 感到用匯編語言做移植太過于頭痛,他們想用高級語言來完成第三版,對于當時完全以匯編語言來開發程序的年代,他們的想法算是相當的瘋狂。一開始他們想嘗試用 Fortran ,可是失敗了。后來他們用一個叫 BCPL ( Basic Combined Programming Language )的語言開發,他們整合了 BCPL 形成 B 語言,后來 Dennis Ritchie 覺得 B 語言還是不能滿足要求,就是就改良了 B 語言,這就是今天的大名鼎鼎的 C 語言。于是, Ken Thompson 與 Dennis Ritchie 成功地用 C 語言重寫了 Unix 的第三版內核。至此, Unix 這個操作系統修改、移植相當便利,為 Unix 日后的普及打下了堅實的基礎。而 Unix 和 C 完美地結合成為一個統一體, C 與 Unix 很快成為世界的主導。
Unix 的第一篇文章 “ The UNIX Time Sharing System ”由 Ken Thompson 和 Dennis
Ritchie 于 1974 年 7 月的 the Communications of the ACM 發表。這是 UNIX 與外界的首次接觸。結果引起了學術界的廣泛興趣并對其源碼索取,所以, Unix 第五版就以“僅用于教育目的”的協議,提供給各大學作為教學之用,成為當時操作系統課程中的范例教材。各大學公司開始通過 Unix 源碼對 Unix 進行了各種各樣的改進和擴展。于是, Unix 開始廣泛流行。
Ken Thompson?& Dennis Ritchie,
Unix 分裂
1978 年,對 Unix 而言是革命性的一年;因為學術界的老大柏克利大學 ( UC Berkeley ),推出了一份以第六版為基礎,加上一些改進和新功能而成的 Unix 。這就是著名的“ 1 BSD ( 1st Berkeley Software Distribution )”,開創了 Unix 的另一個分支: BSD 系列。 同時期, AT&T 成立 USG ( Unix Support Group ),將 Unix 變成商業化的產品。從此, BSD 的 Unix 便和 AT&T 的 Unix 分庭抗禮, Unix 就分為 System IV 和 4.x BSD 這兩大主流,各自蓬勃發展。
1979 年發布的 Unix 第七版被稱為是“最后一個真正的 Unix ”,這個版本的 Unix 內核只有 40K bytes 。后來這個版本被移植到 VAX 機上( 我在大學時學習 C 語言時用過這個 VAX 機,我還記得那時上 VAX 機最大的愛好就是使用 talk 命令和別人聊天,呵呵 )。 20 世紀 80 年代相繼發布的 8 、 9 、 10 版本只授權給了少數大學。
1982
年,
AT&T
基于版本
7
開發了
UNIX System
Ⅲ的第一個版本,這是一個商業版本僅供出售。為了解決混亂的
UNIX
版本情況,
AT&T
綜合了其他大學和公司開發的各種
UNIX
,開發了
UNIX System V Release 1
。這個新的
UNIX
商業發布版本不再包含源代碼,所以加州大學
Berkeley
分校繼續開發
BSD UNIX
,作為
UNIX System III
和
V
的替代選擇。
BSD
對
UNIX
最重要的貢獻之一是
TCP/IP
。
BSD
有
8
個主要的發行版中包含了
TCP/IP
:
同時,其他一些公司也開始為其自己的小型機或工作站提供商業版本的 UNIX 系統,有些選擇 System V 作為基礎版本,有些則選擇了 BSD 。 BSD 的一名主要開發者, Bill Joy ,在 BSD 基礎上開發了 SunOS ,并最終創辦了 Sun Microsystems 。
Bill Joy
1991 年,一群 BSD 開發者( Donn Seeley 、 Mike Karels 、 Bill Jolitz 和 Trent Hein )離開了加州大學,創辦了 Berkeley Software Design, Inc (BSDI) 。 BSDI 是第一家在便宜常見的 Intel 平臺上提供全功能商業 BSD UNIX 的廠商。后來 Bill Jolitz 離開了 BSDI ,開始了 386BSD 的工作。 386BSD 被認為是 FreeBSD 、 OpenBSD 和 NetBSD 、 DragonFlyBSD 的先輩。
這是一個 AT&T 妄圖私有化的 Unix 的時代。為了私有化 Unix , 1986 年 IEEE 指定了一個委員會制定了一個一個開放作業系統的標準 , 稱為 POSIX (Portable Operating Systems Interface) 。最后加上個 X ,不知道是為了好聽,還是因為這本質上是 UNIX 的標準。當然, AT&T 的 Unix 取得了這個標準制訂戰爭的勝利,還取得了 Unix 這個注冊商標。此時 BSD 的擁護者自喻為冷酷無情的公司帝國的反抗軍。就銷售量來說, AT&T UNIX 始終趕不上 BSD/Sun 。到 1990 年, AT&T 與 BSD 版本已難明顯區分,因為彼此都有采用對方的新發明。
?????? 這段時期,從實驗室出來的被全世界所分享的 Unix ,正處于被私有化的關鍵時期。
Unix 的法律糾紛
Berkeley Software Design, Inc ( BSDI )很快就與 AT&T 的 UNIX Systems Laboratories ( USL )附屬公司產生了法律糾紛, USL 是 AT&T 注冊的公司。 AT&T 為了擁有 System V 版權,以及 Unix 商標,為了壟斷 Unix , 1992 年, USL 正式對 BSDI 提起訴訟,說 BSD 剽竊他的源碼。而最終了結了好評如潮的 BSD 系統。
由于最后判決懸而未決,這樁法律訴訟將 BSD 后裔的開發,特別是自由軟件,延遲了兩年,這導致沒有法律問題的 Linux 內核獲得了極大的支持。 Linux 跟 386BSD 的開發幾乎同時起步, Linus 說,當時如果有自由的基于 386 的 Unix-like 操作系統,他就可能不會創造 Linux 。盡管無法預料這給以后的軟件業究竟造成了什么樣的影響(如果沒有這個法律糾紛,很有可能沒有今天的革命性的 Linux ),但有一點可以肯定, Linux 更加豐富了這塊土壤。
這場官司一直打到 AT&T 將自己的 Unix 系統實驗室賣掉,新接手的 Novell 公司采取了一種比較開明的做法,允許 BSDI 自由發布自己的 BSD ,但是前提是必須將來自于 AT&T 的代碼完全刪除,于是誕生了 4.4 BSD Lite 版,由于這個版本不存在法律問題, 4.4BSD Lite 成為了現代 BSD 系統的基礎版本。
這樁訴訟最終在 1994 年 1 月了結,更多地滿足了 BSDI 的利益。伯克利套件的 18,000 個文件中,只有 3 個文件要求刪除,另有 70 個文件要求修改,并顯示 USL 的版權說明。這項調解另外要求, USL 不得對 4.4BSD 提起訴訟,不管是用戶還是 BSDI 代碼的分發者。于是, BSD Unix 走上了復興的道路。 BSD 的開發也走向了幾個不同的方向,并最終導致了 FreeBSD 、 OpenBSD 和 NetBSD 的出現。
從 AT&T 意識到了 Unix 的商業價值,不再將 Unix 源碼授權給學術機構以來,到以后的幾十年, Unix 仍在不斷變化,其版權所有者不斷變更,授權者的數量也在增加。 Unix 的版權曾經為 AT&T 所有,之后 Novell 擁有了 Unix ,再之后 Novell 又將版權出售給了 SCO (這一事實雙方尚存在爭議)。有很多大公司在取得了 Unix 的授權之后,開發了自己的 Unix 產品。(幾年前,據傳聞微軟為了限制 Linux ,微軟讓 SCO 到法院告 Linux 剽竊其源碼)
由于 Unix 是由 C 語言寫的,所以修改和移植都很容易,因此,很多商業公司及學術機構均加入這個操作系統的研發,各個不同版本的 Unix 也開始蓬勃發展。這才產生了今天這么多的各式各樣的 Unix 衍生產品。如 AIX 、 Solaris 、 HP-UX 、 IRIX 、 OSF 、 Ultrix 等等。(這些商業化的 Unix 基本上都是源于 AT&T 授權的 Unix System V )
Unix 開源組織
AT&T 的這種商業態度,讓當時許許多的 Unix 的愛好者和軟件開發者們感到相當的痛心和憂慮,他們認為商業化的種種限制并不利于產生的發展,相反還能導制產品出現諸多的問題。隨著商業化 Unix 的版本的種種限制和諸多問題,引起了大眾的不滿和反對。于是,大家開始有組織地結成“反叛聯盟”以此對抗欺行罷市的 AT&T 等商業化行為。
另一方面,關于“大教堂”(集權、封閉、受控、保密)和“集市”(分權、公開、精細的同僚復審)兩種開發模式的對比成為了新思潮的中心思想。這個新思潮對 IT 業產生了非常深遠影響。為整個計算機世界帶來了革命性的價值觀。
此時,一個名叫
Richard Stallman
的領袖出現了,他認為
Unix
是一個相當好的操作系統,如果大家都能夠將自己所學貢獻出來,那么這個系統將會更加的優異!他倡導的
Open Source
的概念,就是針對
Unix
這一事實反對實驗室里的產品商業化私有化。盡管
Stallman
既不是、也從來沒有成為一個
Unix
程序員,但在后
1980
的大環境下,實現一個仿
Unix
操作系統成了他追求的明確戰略目標。
Richard Stallman
早期的捐助者大都是新踏入
Unix
土地的老牌
ARPANET
黑客,他們對代碼共享的使命感甚至比那些有更多
Unix
背景的人強烈。
為了這個理想, Richard Stallman 于 1984 年創業了 GNU ,計劃開發一套與 Unix 相互兼容的的軟件。 1985 年 Richard Stallman 又創立了自由軟件基金會( Free Software Foundation )來為 GNU 計劃提供技術、法律以及財政支持。盡管 GNU 計劃大部分時候是由個人自愿無償貢獻,但 FSF 有時還是會聘請程序員幫助編寫。當 GNU 計劃開始逐漸獲得成功時,一些商業公司開始介入開發和技術支持。當中最著名的就是之后被 Red Hat 兼并的 Cygnus Solutions 。
GNU 組織的建立,延續了當年 Unix 剛出現時的情形,并為這種情形建立了可靠的法律和財務保障。 GNU 工程十幾年以來 , 已經成為一個對軟件開發主要的影響力量, 創造了無數的重要的工具。例如:強健的編譯器,有力的文本編輯器,甚至一個全功能的操作系統。從那時開始,許多程序員聚集起來開始開發一個自由的、高質量、易理解的軟件,讓這使得 Unix 社區生機勃勃,一派繁榮景象。
自 90 年代發起這個計劃以來, GNU 開始大量的產生或收集各種系統所必備的組件,像是——函數庫( libraries )、編譯器( compilers )、調式工具( debugs )、文本編輯器( text editors )、網站服務器( web server ),以及一個 Unix 的使用者接口( Unix shell )等等,等等。但由于種種原因, GNU 一直沒有開發操作系統的 kernel 。正當 Richard Stallman 在為操作系統內核傷腦筋的時候, Linux 出現了。
Linux 橫空出世
1990
年,
Linus Torvalds
還是芬蘭赫爾辛基大學的一名學生,最初是用匯編語言寫了一個在
80386
保護模式下處理多任務切換的程序,后來從
Minix
(
Andy Tanenbaum
教授所寫的很小
的
Unix
操作系統
,
主要用于操作系統教學)得到靈感,進一步產生了自認為狂妄的想法——寫一個比
Minix
更好的
Minix
,于是開始寫了一些硬件的設備驅動程序,一個小的文件系統。這樣
從一開始,
Linus
就決定自由擴散
Linux
,包括原代碼,隨即
Linux
引起黑客們(
hacker
)的注意,通過計算機網絡加入了
Linux
的內核開發。
Linux
傾向于成為一個黑客的系統——直到今天,在
Linux
社區里內核的開發被認為是真正的編程。由于一批高水平黑客的加入,使
Linux
發展迅猛,幾乎一兩個禮拜就有新版或修正版的出現,到
1993
年底
94
年初,
Linux 1.0
終于誕生了!
Linux 1.0
已經是一個功能完備的操作系統,而且內核寫得緊湊高效,可以充分發揮硬件的性能,在
Linux 的歷史是和 GNU 緊密聯系在一起的。從 1983 年開始的 GNU 計劃致力于開發一個自由并且完整的類 Unix 操作系統,包括軟件開發工具和各種應用程序。到 1991 年 Linux 內核發布的時候, GNU 已經幾乎完成了除了系統內核之外的各種必備軟件的開發。在 Linus Torvalds 和其它開發人員的努力下, GNU 組件可以運行于 Linux 內核之上。整個內核是基于 GNU 通用公共許可,也就是 GPL ( GNU General Public License , GNU 通用公共許可證)的,但是 Linux 內核并不是 GNU 計劃的一部分。 1994 年 3 月, Linux1.0 版正式發布, Marc Ewing 成立了 Red Hat 軟件公司,成為最著名的 Linux 分銷商之一。
嚴格來講, Linux 這個詞本身只表示 Linux 內核,但在實際上人們已經習慣了用 Linux 來形容整個基于 Linux 內核,并且使用 GNU 工程各種工具和應用程序的操作系統 ( 也被稱為 GNU/Linux) 。基于這些組件的 Linux 軟件被稱為 Linux 發行版。一般來講,一個 Linux 發行套件包含大量的軟件,比如軟件開發工具,數據庫, Web 服務器(例如 Apache) , X Window ,桌面環境(比如 GNOME 和 KDE ),辦公套件(比如 OpenOffice.org ),等等。
1991 至 1995 年間, Linux 從概念型的 0.1 版本內核原型,發展成為能夠在性能和特性上均堪媲美專有 Unix 的操作系統,并且在連續正常工作時間等重要統計數據上打敗了這些 Unix 中的絕大部分。 1995 年, Linux 找到了自己的殺手級應用——開源的 web 服務器 Apache 。就像 Linux , Apache 出眾地穩定和高效。很快,運行 Apache 的 Linux 機器成了全球 ISP 平臺的首選。約 60% 的網站選用 Apache ,輕松擊敗了另兩個主要的專有型競爭對手。今天的 LAMP ( Linux , Apache, MySQL, PHP )已經成為了架構 Web 服務器的主要首選。
現如今的 Linux 不但可以裝在幾乎所有的主流服務器上,當然也包括桌面的 X86 系統中。其還常常被用于嵌入式系統,機頂盒、手機、交換機、游戲機、 PDA 、網絡交換機、路由器、等等,都是因為 Linux 那精彩的內核。
Linux 的出現,不僅僅給世界帶來了一個免費的操作系統,也不僅僅是對 Unix 自由、共享的文化的延續,它的出現帶給了計算機世界自 Unix 、 GNU 以來更為成熟的思想和文化。
Linux 今天的領袖
Linux 和 GNU 關系是比較微妙的。那時,自由軟件基金會編寫的用戶軟件工具包鋪平了一條擺脫高成本專有軟件開發工具的前進道路。意識服從經濟,而不是領導:一些新手加入了 RMS 的革命運動,高舉 GPL 大旗,另一些人則更認同整體意義上的 Unix 傳統,加入了反對 GPL 的陣營,但其他大部分人置身事外,一心編碼。
Linus Torvalds 巧妙地跨越了 GPL 和反 GPL 的派別之爭。他利用 GNU 工具包搭起了自創的 Linux 內核,用 GPL 的傳染性質保護它,但拒絕認同 Richard Stallman 的許可協議反映的思想體系計劃。 Linus Torvalds 明確表示他認為自由軟件一般情況下更好,但他偶爾也用專有軟件。即使在他自己的事業中,他也拒絕成為狂熱分子。這一點極大地吸引了大多數黑客,他們雖然早就反感 Richard Stallman 的言辭,但他們的懷疑論一直缺個有影響力或者令人信服的代言人。而 Linus Torvalds 正好充當了這一角色。
Linus Torvalds
令人愉快的實用主義及靈活而低調的行事風格,促使黑客文化在
1993
至
1997
年間取得了一連串令人驚奇的勝利,不僅僅在技術上的成功,還讓圍繞
Linux
操作系統的發行、服務和支持產業有了堅實的開端。結果,他的名望和影響也一飛沖天。
Torvalds
成為了互聯網時代的英雄;到
1995
年為止,他只用了四年時間就在整個黑客文化界聲名顯赫,而
Richard Stallman
為此花了十五年,而且他還遠遠超過了
Stallman
向外界販賣“自由軟件”的記錄。與
Torvalds
相比,
Richard Stallman
的言辭漸漸顯得既刺耳又無力。
今天,我們也說不清楚是 GNU Linux 還是 Linux GNU 。 Linux 既不排斥開源,也不排斥商業化, Linus 認為好的軟件是需要免費和商業化共同推進的。正是這種革命性的想法,造就了今天的 Linux 火紅的局面。 Linux 就像一股清泉流入了所有人的心中,引發了很多的啟迪和思考。
(
轉載時請注明作者和出處。未經許可,請勿用于商業用途
)
更多文章請訪問我的 Blog: http://blog.csdn.net/haoel
?
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1542340
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
