Unix 的發(fā)展無疑是這段計(jì)算史上最重要的里程碑之一。 該操作系統(tǒng)不僅引入了當(dāng)今信息技術(shù)中一些最基本的概念,例如分層結(jié)構(gòu)的文件系統(tǒng),它還是許多其他系統(tǒng)的基礎(chǔ),例如 Apple 的 macOS 和 iOS,或開源 Linux。 反過來,這導(dǎo)致了無數(shù)衍生產(chǎn)品的出現(xiàn),例如
Ubuntu、Debian 或移動(dòng) Android。 但 Unix 究竟是如何成為最有影響力的計(jì)算機(jī)管理應(yīng)用程序之一的,為什么它的開發(fā)團(tuán)隊(duì)能夠?qū)⒆畛醯南敕ㄍ耆涗浽诤诎搴陀浭卤旧希?div style="height:15px;">
Unix 操作系統(tǒng)的發(fā)展歷史
Multics 聯(lián)合項(xiàng)目奠定基礎(chǔ)
1965 年,一個(gè)工作組在聯(lián)合計(jì)算機(jī)會(huì)議上提出了他們關(guān)于新操作系統(tǒng)的想法。 該小組由麻省理工學(xué)院 (MIT)、通用電氣和貝爾實(shí)驗(yàn)室 (Bell Labs) 或 AT&T(自 2016 年起隸屬于諾基亞研發(fā)部門)的員工組成。 他們將操作系統(tǒng)命名為 Multiplexed Information and Computing Service,簡稱 Multics。 他們追求全新的方法,Multics 是最早允許多個(gè)用戶通過共享底層處理器的計(jì)算時(shí)間在一臺(tái)計(jì)算機(jī)上同時(shí)工作的系統(tǒng)之一。
Multics 工作組需要一臺(tái)具有特定要求的計(jì)算機(jī)來啟動(dòng)他們的項(xiàng)目:一方面,它必須具有格式清晰的指令,以便能夠使用 IBM 用于開發(fā)的高級編程語言 PL/I。 另一方面,它必須支持計(jì)劃中的多用戶操作和異步工作,以最大限度地減少內(nèi)存管理中的性能損失。 為此,選擇了通用電氣的 GE-635 和后來的 GE-645。 開發(fā)是在多用戶系統(tǒng) CTSS 上進(jìn)行的,該系統(tǒng)早在 1960 年代由麻省理工學(xué)院開發(fā),并且已經(jīng)啟動(dòng)并運(yùn)行。 PL/I 編譯器開發(fā)的延遲、財(cái)務(wù)瓶頸、內(nèi)部分歧和不斷增長的外部壓力最終導(dǎo)致貝爾實(shí)驗(yàn)室于 1969 年退出該項(xiàng)目。
Multics 成為 Unix
Multics 在麻省理工學(xué)院得到進(jìn)一步開發(fā),后來在被通用電氣收購后(直到 1986 年),由霍尼韋爾國際公司在霍尼韋爾 6180 機(jī)器上進(jìn)行商業(yè)分發(fā)。 然而,當(dāng)時(shí)在貝爾實(shí)驗(yàn)室工作的計(jì)算機(jī)科學(xué)家肯·湯普森 (Ken Thompson) 無法放棄多用戶系統(tǒng):他與丹尼斯·里奇 (Dennis Ritchie) 和 AT&T 的一個(gè)小團(tuán)隊(duì)一起,開始規(guī)劃自己的系統(tǒng),基于 多元學(xué)原理。 但最初證明尋找合適的計(jì)算機(jī)是徒勞的——由于貝爾實(shí)驗(yàn)室拒絕購買合適的副本,開發(fā)人員開始在便條紙和黑板上記錄他們的筆記和計(jì)劃文件系統(tǒng)的進(jìn)度。
最后,為計(jì)劃中的項(xiàng)目購置了一臺(tái)來自 Digital Equipment Corporation (DEC) 的二手 PDP-7 小型計(jì)算機(jī)。 這個(gè)“只有”墻上單元大小的計(jì)算機(jī)系統(tǒng)與 GECOS(通用電氣綜合操作系統(tǒng))一起運(yùn)行,從那時(shí)起它就作為開發(fā)平臺(tái)。 有價(jià)值的軟件工具,如命令行 (SH) 和編輯器 (ED) 以及現(xiàn)有的紙質(zhì)文件系統(tǒng)得到了快速開發(fā) – 最初仍然使用匯編語言(面向硬件,但對人類進(jìn)行了簡化)。 由于新的操作系統(tǒng)只允許兩個(gè)用戶同時(shí)在一個(gè)進(jìn)程上工作(不像 Multics),所以團(tuán)隊(duì)根據(jù)模板將其命名為 Unics。 由于 GECOS 中文件名長度的限制,最終決定使用 Unix。
先是 B,然后是 C:Unix 獲得了自己的高級編程語言
在貝爾實(shí)驗(yàn)室團(tuán)隊(duì)編寫了 Unix 和其他一些基本程序之后,是時(shí)候用不太復(fù)雜的變體替換用于此目的的匯編語言了。 然而,開發(fā)已有的 IBM 語言 Fortran 的計(jì)劃在短時(shí)間內(nèi)就被否決了。 相反,工作開始于他們自己的語言,并且強(qiáng)烈面向 PL/I(Multics 語言)和麻省理工學(xué)院開發(fā)的 BCPL(基本組合編程語言)。 隨后,Ritchie 和他的同事們用這種語言重寫了一些系統(tǒng)工具,直到他們最終在 1970 年收到了一臺(tái)新的 PDP-11 計(jì)算機(jī),并再次被迫重新考慮他們的技術(shù)。 這是因?yàn)樾碌南到y(tǒng)架構(gòu)不像 PDP-7 計(jì)算機(jī)和編程語言 B 那樣是面向字的,而是面向字節(jié)的。
在接下來的兩年里,貝爾實(shí)驗(yàn)室開發(fā)了 C 的后繼者,其語法和其他特性可以在許多現(xiàn)代編程語言中找到,如 c++、JavaScript、PHP 或 Perl。 當(dāng) 1973 年語言足夠成熟時(shí),開發(fā)團(tuán)隊(duì)開始用 C 語言重寫完整的 Unix 內(nèi)核。結(jié)果由 Unix 團(tuán)隊(duì)在 1970 年代中期發(fā)布。 由于 AT&T 當(dāng)時(shí)不允許銷售任何軟件,作為國家控制的電信行業(yè),Unix(版本 6)是一個(gè)多用戶系統(tǒng),也允許同時(shí)進(jìn)行多個(gè)進(jìn)程,免費(fèi)提供給所有感興趣的大學(xué) – 包括一個(gè) C 編譯器,這使得該系統(tǒng)幾乎可以在所有平臺(tái)上使用。
硬件友好和開源:Unix 征服了開發(fā)者場景
隨著面向教育機(jī)構(gòu)的 Unix 軟件的發(fā)布,新操作系統(tǒng)的成功迅速變得越來越明顯,最初只是編程界的一個(gè)玩具。 在此期間,IBM 大型機(jī)和 PDP 機(jī)器上的常見工作流程繼續(xù)在 RSX-11、RT-11 或 IST 等本地系統(tǒng)上運(yùn)行。 然而,對于開發(fā)者而言,內(nèi)核和單個(gè)應(yīng)用程序提供的源代碼的價(jià)值不僅僅是一種學(xué)習(xí)效果:Unix 對硬件的低要求及其高可用性鼓勵(lì)了實(shí)驗(yàn)和進(jìn)一步開發(fā),這尤其受到了 加州大學(xué)伯克利分校(湯姆森以前的家鄉(xiāng)大學(xué))- 盡管他在 1976 年在其新成立的計(jì)算機(jī)科學(xué)學(xué)院擔(dān)任客座教授這一事實(shí)可能發(fā)揮了重要作用。
當(dāng)時(shí)的兩名研究生 Bill Joy 和 Chuck Haley 改進(jìn)了 Thompson 開發(fā)的 Pascal 系統(tǒng),并用 ex 編寫了一個(gè)全新的文本編輯器 – vi 的前身,今天仍然可以在 unixoid 系統(tǒng)標(biāo)準(zhǔn)安裝中找到它。 1977 年,在 Joy 的指導(dǎo)下,出現(xiàn)了 Unix 的修改變體,其中包含迄今為止所做的改進(jìn)和進(jìn)一步發(fā)展。 Berkeley Software Distribution (BSD),后來將 TCP/IP 網(wǎng)絡(luò)協(xié)議集成到 Unix 宇宙中,并首次能夠滿足自由操作系統(tǒng)的要求(得益于其自身的 BSD 許可證),并被認(rèn)為 成為迄今為止最重要的 Unix 修改之一。
80 年代:商業(yè)化和 Unix 戰(zhàn)爭
在接下來的幾年里,越來越多的修改被開發(fā)出來,包括那些專注于其他方面的修改,比如金融。 例如,
Microsoft 在 1979 年獲得了 Unix V7 許可,用于為 Intel 和 Motorola 處理器等開發(fā)端口。 次年,他們發(fā)布了 Xenix,最初計(jì)劃將其作為 PC 的標(biāo)準(zhǔn)操作系統(tǒng),但最終對硬件提出了過高的要求。 微軟最終將進(jìn)一步開發(fā)交給了軟件制造商 SCO(Santa Cruz Operation),以專注于 OS/2 和 MS-DOS 的進(jìn)一步開發(fā)。
1982 年,比爾·喬伊 (Bill Joy) 也加入了這一行列,他新成立的公司 Sun Microsystems 使用基于 BSD 的專有系統(tǒng) SunOS(Solaris 的前身),該系統(tǒng)專門設(shè)計(jì)用于服務(wù)器和工作站。
然而,真正爭奪 Unix 粉絲的戰(zhàn)斗發(fā)生在 AT&T 和伯克利大學(xué)之間,前者現(xiàn)已獲得商業(yè)發(fā)行許可,后者由于擁有大量支持程序員而能夠突出有價(jià)值的創(chuàng)新。 AT&T 首先試圖通過 System III(1981 年)和 System V 的新優(yōu)化版本(1983 年)征服市場,兩者均基于 Unix V7。 隨后伯克利大學(xué)同時(shí)發(fā)布了 4.3BSD,在 18 個(gè)月內(nèi)發(fā)放了 1000 個(gè)許可證。 這使得它比付費(fèi)的 System V 更受歡迎,后者缺乏 Berkeley 變體的文件快速系統(tǒng) (FFS) 和網(wǎng)絡(luò)功能(由于集成了 TCP/IP)。
隨著 System V 的第四次發(fā)布(1988 年),AT&T 實(shí)現(xiàn)了這兩個(gè)和許多其他 BSD 功能,以及 Xenix 和 SunOF,這導(dǎo)致許多用戶轉(zhuǎn)向商業(yè)選項(xiàng)。
謝謝,Penguin:Unix 成為服務(wù)器解決方案
雖然不同的 Unix 系統(tǒng)最初在銷售和忠誠度方面相互競爭,但蘋果和微軟的競爭始于個(gè)人計(jì)算機(jī)領(lǐng)域,后來又進(jìn)入了服務(wù)器領(lǐng)域。 雖然微軟在家用 PC 方面贏得了比賽,但基于 Unix 概念的系統(tǒng)在 1991 年隨 Linux 突然出現(xiàn)在現(xiàn)場,并在接下來的幾年中贏得了服務(wù)器環(huán)境。 得益于免費(fèi)許可的內(nèi)核和免費(fèi)提供的 GNU 軟件,開發(fā)人員 Linus Torvalds 實(shí)現(xiàn)了對具有競爭力的開源操作系統(tǒng)的渴望,并贏得了當(dāng)時(shí)的市場。
直到今天,許多 Unix Linux 衍生產(chǎn)品,如 Debian、CentOS、Red Hat 或 Ubuntu 都被用作各種服務(wù)器的系統(tǒng)軟件。 特別是 Ubuntu 在家庭 PC 中越來越受歡迎。 到目前為止,我們有一篇文章介紹的 Linux 并不是當(dāng)今軟件世界中唯一重要的 Unix 繼承者:自 Mac OS X 10.0 或 Mac OS X Server 1.0 以來,
Apple 操作系統(tǒng)使用免費(fèi)的 BSD 變體 Darwin 作為子結(jié)構(gòu)。 Berkeley Unix 本身甚至多次代表許多其他免費(fèi)衍生產(chǎn)品,如 Free BSD、Open BSD 或 Net BSD。
與 iOS(與
macOS 相同的系統(tǒng)基礎(chǔ))和 Android(基于 Linux 內(nèi)核)這兩個(gè)最廣泛用于移動(dòng)設(shè)備的操作系統(tǒng)也屬于 Unix 家族。
什么是 Unix? 系統(tǒng)最重要的里程碑功能
當(dāng)它被引入時(shí),Unix 的許多顯著特征都是絕對新穎的,它們不僅旨在影響 unixoid 系統(tǒng)和發(fā)行版的開發(fā),而且還被競爭對手 Apple 和 Microsoft 在其操作系統(tǒng)中采用。 特別是考慮到以下特征時(shí),Richie、Thompson 和他們參與 Unix 的同事是當(dāng)時(shí)現(xiàn)代操作系統(tǒng)的先驅(qū):
分層的通用文件系統(tǒng)
Unix 的一個(gè)基本部分從一開始就是分層組織的文件系統(tǒng),它允許用戶將文件結(jié)構(gòu)化到文件夾中。 可以將任意數(shù)量的子目錄分配給根目錄,根目錄用“/”標(biāo)記。 遵循“一切皆文件”的基本原則,Unix 還將驅(qū)動(dòng)器、硬盤、終端或其他計(jì)算機(jī)映射為文件系統(tǒng)中的設(shè)備文件。 一些衍生產(chǎn)品,包括 Linux,甚至將進(jìn)程及其屬性標(biāo)記為 procfs 虛擬文件系統(tǒng)中的文件。
多任務(wù)處理
Unix 成功的另一個(gè)決定性因素是能夠同時(shí)執(zhí)行多個(gè)進(jìn)程或程序而不會(huì)相互干擾。 該操作系統(tǒng)從一開始就基于搶占式多任務(wù)處理方法。 使用這種方法,調(diào)度程序(它是操作系統(tǒng)內(nèi)核的一部分)通過優(yōu)先級系統(tǒng)管理各個(gè)進(jìn)程。 直到 1990 年代后期,Apple 和 Microsoft 才開始實(shí)施類似的流程管理解決方案。
多用戶系統(tǒng)
甚至 Multics 的主要目標(biāo)也是一個(gè)允許多個(gè)用戶同時(shí)工作的系統(tǒng)。 為此,為每個(gè)程序和流程分配了一個(gè)所有者。 即使 Unix 最初僅限于兩個(gè)用戶,此功能從一開始就是系統(tǒng)軟件組合的一部分。 這種多用戶系統(tǒng)的優(yōu)勢不僅在于有機(jī)會(huì)同時(shí)訪問單個(gè)處理器的性能,還在于相關(guān)的權(quán)限管理。 管理員現(xiàn)在可以為不同的用戶定義訪問權(quán)限和可用資源。 然而,最初,涉及每臺(tái)相應(yīng)計(jì)算機(jī)的硬件也是先決條件。
網(wǎng)絡(luò)能力
憑借 4.2BSD,伯克利的 Unix 于 1983 年成為首批集成互聯(lián)網(wǎng)協(xié)議棧的操作系統(tǒng)之一,為互聯(lián)網(wǎng)和簡單的網(wǎng)絡(luò)配置提供了基礎(chǔ),并提供了充當(dāng)客戶端或服務(wù)器的能力。 80年代后期,System V的第四個(gè)版本(已經(jīng)提到)也是商用AT&T系統(tǒng)的變種,將內(nèi)核添加到傳說中的協(xié)議家族中。 Windows 應(yīng)該只支持 TCP/IP 3.11 (1993) 和適當(dāng)?shù)臄U(kuò)展。
平臺(tái)獨(dú)立性
在創(chuàng)建 Unix 時(shí),雖然其他操作系統(tǒng)及其應(yīng)用程序仍然針對特定處理器類型進(jìn)行定制,但貝爾實(shí)驗(yàn)室團(tuán)隊(duì)從一開始就追求便攜式系統(tǒng)的方法。 盡管第一種語言是匯編語言,但系統(tǒng)軟件的基本結(jié)構(gòu)一創(chuàng)建,該項(xiàng)目就創(chuàng)建了一種新的、更高級的編程語言。 這種語言是歷史上 C 語言的前身。 雖然用 C 語言編寫的組件仍然與 PDP 機(jī)器架構(gòu)緊密相關(guān),Ritchie 和他的同事將其用作他們工作的基礎(chǔ),盡管包含了編譯器。 然而,最近,隨著 Unix V7 版本(1979 年)的大幅修訂,該操作系統(tǒng)理所當(dāng)然地贏得了便攜系統(tǒng)的聲譽(yù)。
Unix 工具箱原理和 shell
Unix 系統(tǒng)結(jié)合了大量有用的工具和命令,它們通常只為少數(shù)特殊任務(wù)而設(shè)計(jì)。 例如,Linux 使用 GNU 工具。 對于一般問題的解決,原則是在標(biāo)準(zhǔn)工具的組合中尋找答案,而不是開發(fā)特定的新程序。 最重要的工具一直是 shell (SH),它是一種面向文本的命令解釋器,可提供廣泛的編程選項(xiàng)。 這個(gè)經(jīng)典的用戶界面也可以在沒有圖形用戶界面的情況下使用,即使那種界面自然會(huì)增加用戶的舒適度。 但是,shell 確實(shí)為有經(jīng)驗(yàn)的用戶提供了一些重要的優(yōu)勢:
智能自動(dòng)完成簡化操作
復(fù)制和粘貼功能
交互(直接訪問)和非交互(腳本執(zhí)行)狀態(tài)可用
更高的靈活性,因?yàn)楦鱾€(gè)應(yīng)用程序(工具、命令)幾乎可以自由組合
標(biāo)準(zhǔn)化和穩(wěn)定的用戶界面,GUI 并不總是能保證這一點(diǎn)
自動(dòng)記錄腳本工作路徑
快速輕松地實(shí)施應(yīng)用程序
最后:如果你想了解操作系統(tǒng)的工作原理,請看一看 Unix
微軟和蘋果的崛起,與它們的創(chuàng)造者比爾蓋茨和史蒂夫喬布斯直接相關(guān),無疑是無與倫比的。 然而,這兩個(gè)巨大的成功故事的基礎(chǔ)是由丹尼斯·里奇、肯·湯普森和 Unix 團(tuán)隊(duì)其他成員在 1969 年至 1974 年間的開創(chuàng)性工作奠定的。Unix 不僅產(chǎn)生了自己的衍生產(chǎn)品,還影響了其他操作系統(tǒng) 具有層次結(jié)構(gòu)文件系統(tǒng)、強(qiáng)大的 shell 或高可移植性等概念。 為了實(shí)現(xiàn)后者,計(jì)算機(jī)歷史上最具影響力的編程語言 C 幾乎是順帶開發(fā)的。
要了解語言和一般操作系統(tǒng)功能的可能性,沒有比 Unix 系統(tǒng)更好的說明對象了。 您甚至不必使用其中一種經(jīng)典變體:Gentoo 或 Ubuntu 等 Linux 發(fā)行版已經(jīng)適應(yīng)了現(xiàn)代需求,而沒有放棄對系統(tǒng)的最大控制等基本功能。 使用對初學(xué)者友好的 macOS,您的可能性會(huì)受到更多限制,它掌握了強(qiáng)大的 Unix 基礎(chǔ)和精心設(shè)計(jì)的圖形用戶界面之間的平衡行為。