UNIX

計算機操作系統

UNIX(非複用資訊和計算機服務,英語:Uniplexed Information and Computing ServiceUnICS),一種多用戶、多行程的電腦作業系統,源自於從20世紀70年代開始在美國AT&T公司的貝爾實驗室開發的AT&T Unix

Unix
PDP-11模擬器上執行的Version 7 Unix
開發者貝爾實驗室肯·湯普遜丹尼斯·里奇布萊恩·柯林漢道格拉斯·麥克羅伊喬伊·歐桑納
程式語言C語言組合語言
作業系統家族Unix
運作狀態當前
原始碼模式歷史上是閉原始碼,但某些Unix計劃(包括BSD家族和illumos)是開源軟件
首次發佈開發起於1969年
內部首次出版手冊於1971年11月 (1971-11)[1]
在貝爾實驗室外宣佈於1973年10月 (1973-10)[2]
支援的語言英語
內核類別多種:單體內核微內核混合內核
預設用戶介面命令列介面圖形化使用者介面X Window系統
許可證各種:某些版本是專有軟件,另一些是自由軟件/開源軟件
官方網站opengroup.org/unix

簡介

UNIX作業系統,是一個強大的多用戶、多工作業系統,支援多種處理器架構,按照作業系統的分類,屬於分時作業系統,最早由肯·湯普遜、丹尼斯·里奇和道格拉斯·麥克羅伊於1969年在AT&T的貝爾實驗室開發。目前它的商標權由國際開放標準組織所擁有,只有符合單一UNIX規範的UNIX系統才能使用UNIX這個名稱,否則只能稱為類UNIXUNIX-like)。

Unix的前身為1964年開始的Multics,1965年時,貝爾實驗室加入一項由通用電氣麻省理工學院合作的計劃;該計劃要建立一套多用戶、多工、多層次(multi-usermulti-processormulti-level)的MULTICS作業系統。貝爾實驗室參與了這個作業系統的研發,但因為開發速度太慢,1969年貝爾實驗室決定退出這個計劃。貝爾實驗室的工程師,肯·湯普遜丹尼斯·里奇,在此時自行開發了Unix

此後的10年,Unix在學術機構和大型企業中得到了廣泛的應用,當時的UNIX擁有者AT&T公司以低廉甚至免費的許可將Unix原始碼授權給學術機構做研究或教學之用,許多機構在此原始碼基礎上加以擴充和改進,形成了所謂的「Unix變種」,這些變種反過來也促進了Unix的發展,其中最著名的變種之一是由加州大學柏克萊分校開發的柏克萊軟件套件(BSD)產品。

後來AT&T意識到了Unix的商業價值,不再將Unix原始碼授權給學術機構,並對之前的Unix及其變種聲明了著作權權利。BSDUnix的歷史發展中具有相當大的影響力,被很多商業廠家採用,成為很多商用Unix的基礎。其不斷增大的影響力終於引起了AT&T的關注,於是開始了一場持久的著作權官司,這場官司一直打到AT&T將自己的Unix系統實驗室賣掉,新接手的Novell採取了一種比較開明的做法,允許柏克萊分校自由發佈自己的Unix變種,但是前提是必須將來自於AT&T的代碼完全刪除,於是誕生了4.4 BSD Lite版,由於這個版本不存在法律問題,4.4 BSD Lite成為了現代柏克萊軟件套件的基礎版本。儘管後來,非商業版的Unix系統又經過了很多演變,但其中有不少最終都是建立在BSD版本上(LinuxMinix等系統除外)。所以從這個角度上,4.4 BSD又是所有自由版本Unix的基礎,它們和System VLinux等共同構成Unix作業系統。

BSD使用主版本加次版本的方法標識,如4.2、4.3BSD,在原始版本的基礎上還有衍生版本,這些版本通常有自己的名字,如4.3BSD-Net/14.3BSD-Net/2等。BSD在發展中也逐漸衍生出3個主要的分支:FreeBSDOpenBSDNetBSD

此後的幾十年中,Unix仍在不斷變化,其著作權所有者不斷變更,授權者的數量也在增加。Unix的著作權曾經為AT&T所有,之後Novell擁有取得了Unix,再之後Novell又將著作權出售給了聖克魯茲作業,但不包括知識產權和專利權(這一事實雙方尚存在爭議)。有很多大公司在取得了Unix的授權之後,開發了自己的Unix產品,比如IBMAIX、惠普的HP-UXSCOOpenserverSUNSolaris(被Oracle收購)和SGIIRIX

Unix因為其安全可靠,高效強大的特點在伺服器領域得到了廣泛的應用。直到GNU/Linux流行開始前,Unix也是科學計算大型電腦超級電腦等所用作業系統的主流。現在其仍然被應用於一些對穩定性要求極高的數據中心之上。

歷史

初創期

Unix最初受到Multics計劃的啟發。Multics是由麻省理工學院通用電氣和AT&T底下的貝爾實驗室合作進行的作業系統專案,被設計執行在GE-645大型主機上。但是由於整個目標過於龐大,糅合了太多的特性,Multics雖然發佈了一些產品,但是效能都很低,AT&T最終撤出了投入Multics專案的資源,退出這項合作計劃。

貝爾實驗室最初參與Multics計劃的部門為計數機技術研發部門(Computing Techniques Research Department),部門主管為道格拉斯·麥克羅伊,其下的工程師,原有丹尼斯·里奇布萊恩·柯林漢道格拉斯·麥克羅伊麥克·列斯克(Mike Lesk)與喬伊·歐桑納(Joe Ossanna)等人,為了Multics計劃,他們又召募了肯·湯普遜加入其中。肯·湯普遜進入Multics計劃不久,計劃就中止了,但因為機器仍然保留在貝爾實驗室,他繼續在GE-645上開發軟件。肯·湯普遜在GE-645上,寫出了一個仿真器,可以讓一個檔案系統與主記憶體分頁機制運作起來。他同時也寫了一個程式語言Bon,編寫了一個太空旅行遊戲。經過實際執行後,他發現遊戲速度很慢而且耗費昂貴,每次執行會花費75美元。在GE-645被搬走後,肯·湯普遜在實驗室中尋找沒人使用的機器,找到了幾台PDP-7。丹尼斯·里奇的幫助下,湯普遜用PDP-7的組合語言重寫了這個遊戲,並使其在DEC PDP-7上執行起來。這次經歷加上Multics專案的經驗,促使湯普遜開始在DEC PDP-7上研究如何開發作業系統。

1969年,肯·湯普遜提議在PDP-7上開發一個新的階層式作業系統的計劃。Multics的原有成員,加上Rudd Canady,都投入這個計劃。肯·湯普遜發現要編寫驅動程式來驅動檔案系統,進行測試,並不容易,於是開發了一個殼層(shell)與一些驅動程式,做出一個作業系統的雛形。在團隊合作下,Multics的許多功能都被採納,重新實作,最終做出了一個分時多工作業系統,成為第一版UNIX。因為Multics來自「MULTiplexed Information and Computing System」的縮寫,在1970年,那部PDP-7卻只能支援兩個用戶,彼得·紐曼(Peter G. Neumann)戲稱他們的系統其實是:「UNiplexed Information and Computing System」,縮寫為「UNICS」。於是這個專案被稱為UnICSUniplexed Information and Computing System)。

因為PDP-7的效能不佳,肯·湯普遜與丹尼斯·里奇決定把第一版UNIX移植到PDP-11/20的機器上,開發第二版UNIX。在效能提升後,真正可以提供多人同時使用,布萊恩·柯林漢提議將它的名稱改為UNIX

第一版UNIX是用PDP-7組合語言編寫的,一些應用是由叫做B語言直譯語言和組合語言混合編寫的。在進行系統編程時不夠強大,所以湯普遜和里奇對其進行了改造,並於1971年共同發明了C語言。1973年湯普遜和里奇用C語言重寫了Unix,形成第三版UNIX。在當時,為了實現最高效率,系統程式都是由組合語言編寫,所以湯普遜和里奇此舉是極具大膽創新和革命意義的。用C語言編寫的Unix代碼簡潔緊湊、易移植、易讀、易修改,為此後Unix的發展奠定了堅實基礎。

發展期

1974年,湯普遜和里奇合作在ACM通訊上發表了一篇關於UNIX的文章,這是UNIX第一次出現在貝爾實驗室以外。此後UNIX被政府機關,研究機構,企業和大學注意到,並逐漸流行開來。

1975年,UNIX發佈了4、5、6三個版本。1978年,已經有大約600台電腦在執行UNIX。1979年,版本7發佈,這是最後一個廣泛發佈的研究型UNIX版本。20世紀80年代相繼發佈的8、9、10版本只授權給了少數大學。此後這個方向上的研究導致了九號計劃的出現,這是一個新的分散式作業系統

1982年,AT&T基於版本7開發了UNIX System Ⅲ的第一個版本,這是一個商業版本僅供出售。為了解決混亂的UNIX版本情況,AT&T綜合了其他大學和公司開發的各種UNIX,開發了UNIX System V Release 1

這個新的UNIX商業發佈版本不再包含原始碼,所以加州大學柏克萊分校繼續開發BSD UNIX,作為UNIX System III和V的替代選擇。BSD對UNIX最重要的貢獻之一是TCP/IP。BSD有8個主要的發行版中包含了TCP/IP:4.1c、4.2、4.3、4.3-Tahoe、4.3-Reno、Net2、4.4以及4.4-lite。這些發佈版中的TCP/IP代碼幾乎是現在所有系統中TCP/IP實現的前輩,包括AT&T System V UNIX和Microsoft Windows

其他一些公司也開始為其自己的小型機或工作站提供商業版本的UNIX系統,有些選擇System V作為基礎版本,有些則選擇了BSD。BSD的一名主要開發者,比爾·喬伊,在BSD基礎上開發了SunOS,並最終創辦了昇陽公司

1991年,一群BSD開發者(Donn Seeley、Mike Karels、Bill Jolitz和Trent Hein)離開了加州大學,創辦了Berkeley Software Design, Inc (BSDI)。BSDI是第一家在便宜常見的Intel平台上提供全功能商業BSD UNIX的廠商。後來Bill Jolitz離開了BSDI,開始了386BSD的工作。386BSD被認為是FreeBSDOpenBSDNetBSDDragonFlyBSD的先輩。

AT&T繼續為UNIX System V增加了檔案鎖定,系統管理,作業控制,流和遠端檔案系統。1987到1989年,AT&T決定將Xenix(微軟開發的一個x86-pc上的UNIX版本),BSD,SunOS和System V融合為System V Release 4(SVR4)。這個新發佈版將多種特性融為一體,結束了混亂的競爭局面。

1993年以後,大多數商業UNIX發行商都基於SVR4開發自己的UNIX變體了。

1127部門的解散

根據一項報導指出,當年負責研發UNIX與後續維護工作的貝爾實驗室1127部門已於2005年8月正式宣告解散。肯·湯普遜已退休,現居加州丹尼斯·里奇調到別的部門;而Douglas McIlroy則在達特茅斯學院擔任教授。

現況

UNIX System V Release 4發佈後不久,AT&T就將其所有UNIX權利出售給了Novell。Novell期望以此來對抗微軟的Windows NT,但其核心市場受到了嚴重傷害,1993年Novell將SVR4的商標權利出售給了X/OPEN公司,後者成為定義UNIX標準的機構。1996年,X/OPEN和OSF/1合併,建立了國際開放標準組織,由它公佈的「單一UNIX規範」定義着具有什麼特徵的作業系統可以冠上UNIX之名,相對地,不符合這些標準但與Unix有類似性的作業系統只能稱為「類Unix」(unix-like)。

UNIX代碼著作權則由Novell售給聖克魯茲作業,2001年這家公司的商標與UNIX產品和業務都出售給了Caldera Systems,交易完成後,Caldera又被重新命名為SCO Group

截止到2020年6月,目前除類UNIX系統(BSD、GNU)外,仍有Oracle SolarisIBM AIXHP-UXMINIX等符合標準的UNIX系統[3]。而原System V Unix則隨着「1127」部門的解散而停止更新。[4]

文化

UNIX具有獨特的技術特點和設計哲學[5]。其設計哲學和美學啓發了許多技術人員,影響了人們的思考方式和看待問題的角度。

UNIX的部分設計原則:

標準

從1980年代開始,POSIX,一個開放的作業系統標準就在制定中,IEEE制定的POSIX標準(ISO/IEC 9945)現在是UNIX系統的基礎部分。

自由的類Unix系統

1984年,Richard Stallman發起了GNU專案,目標是建立一個完全自由且向下相容UNIX的作業系統。這個專案不斷發展壯大,包含了越來越多的內容。現在,GNU專案的產品,如EmacsGCC等已經成為各種其它自由發佈的類UNIX系統中的核心角色。

1990年,Linus Torvalds決定編寫一個自己的Minix內核,初名為Linus' Minix,意為Linus的Minix內核,後來改名為Linux。此內核於1991年正式發佈,並逐漸引起人們的注意。當時GNU作業系統仍未完成,GNU系統軟件集與Linux內核結合後,GNU軟件構成了這個POSIX相容作業系統GNU/Linux的基礎。今天GNU/Linux已經成為發展最為活躍的自由/開放原始碼的類Unix作業系統。

1994年,受到GNU工程的鼓舞,BSD走上了復興的道路。BSD的開發也走向了幾個不同的方向,並最終導致了FreeBSDNetBSDOpenBSDDragonFlyBSD等基於BSD的作業系統的出現。

參考文獻

  1. ^ McIlroy, M. D. A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (技術報告). CSTR. Bell Labs. 1987 [2020-03-09]. 139. (原始內容存檔 (PDF)於2017-11-11). 
  2. ^ Ritchie, D. M.; Thompson, K. The UNIX Time-Sharing System (PDF). Communications of the ACM. 1974, 17 (7): 365–375 [2020-03-09]. (原始內容 (PDF)存檔於2015-06-11). 
  3. ^ 張春曉. UNIX从入门到精通. 北京: 清華大學出版社. 2013: 4–11. ISBN 9787302307358 (中文). 
  4. ^ 贝尔实验室UNIX开发组正式解散. [2020-06-03]. (原始內容存檔於2021-07-28). 
  5. ^ Kernighan, Brian W. Pike, Rob. The UNIX Programming Environment. 1984: viii. 

外部連結