如果你是位二、三十歲的軟件開發(fā)人員,那么你已經(jīng)成長在一個(gè)由Linux主導(dǎo)的世界。數(shù)十年來,它一直是數(shù)據(jù)中心的重要參與者,盡管很難找到明確的操作系統(tǒng)市場份額報(bào)告,但Linux的數(shù)據(jù)中心操作系統(tǒng)份額可能高達(dá)70%,而Windows及其變體幾乎涵蓋了所有剩余的百分比。
使用任何主流公共云服務(wù)的開發(fā)人員都可以預(yù)期目標(biāo)系統(tǒng)會(huì)運(yùn)行Linux。近些年來,隨著Android和基于Linux的嵌入式系統(tǒng)在智能手機(jī)、電視、汽車和其他設(shè)備中的應(yīng)用,Linux已經(jīng)隨處可見。
即便如此,大多數(shù)軟件開發(fā)人員,甚至是那些在這場歷史悠久的 “Linux 革命”中長大的軟件開發(fā)人員,也都聽過說Unix。它聽起來與Linux相似,你可能已經(jīng)聽到人們互換使用這些術(shù)語。或者你也許聽說過Linux被稱為“類Unix”操作系統(tǒng)。
那么,Unix是什么?漫畫中提到了像巫師一樣留著“灰胡子”,坐在發(fā)光的綠色屏幕后面,寫著 C 代碼和 shell 腳本,由老式的、滴灌的咖啡提供動(dòng)力。
但是,Unix的歷史比上世紀(jì)70年代那些留著胡子的 C 程序員要豐富得多。雖然詳細(xì)介紹Unix歷史和 “Unix 與 Linux” 比較的文章比比皆是,但本文將提供高級(jí)背景和列出這些互補(bǔ)世界之間的主要區(qū)別。
Unix的起源
Unix的歷史始于20世紀(jì)60年代后期的AT&T貝爾實(shí)驗(yàn)室,有一小組程序員希望為PDP-7編寫一個(gè)多任務(wù)、多用戶操作系統(tǒng)。這個(gè)貝爾實(shí)驗(yàn)室研究機(jī)構(gòu)的團(tuán)隊(duì)中最著名的兩名成員是Ken Thompson和Dennis Ritchie。
盡管Unix的許多概念都是其前身(Multics)的衍生物,但Unix團(tuán)隊(duì)早在70年代就決定用C語言重寫這個(gè)小型操作系統(tǒng),這是將Unix與其他操作系統(tǒng)區(qū)分開來的原因。
當(dāng)時(shí),操作系統(tǒng)很少,更不要說可移植的操作系統(tǒng)。相反,由于它們的設(shè)計(jì)和底層語言的本質(zhì),操作系統(tǒng)與他們所編寫的硬件平臺(tái)緊密相關(guān)。而通過 C 語言重構(gòu) Unix、Unix現(xiàn)在可以移植到許多硬件體系結(jié)構(gòu)中。
除了這種新的可移植性,之所以使得 Unix 迅速擴(kuò)展到貝爾實(shí)驗(yàn)室以外的其他研究和學(xué)術(shù)機(jī)構(gòu)甚至商業(yè)用途,是因?yàn)椴僮飨到y(tǒng)設(shè)計(jì)原則的幾個(gè)關(guān)鍵點(diǎn)吸引了用戶和程序員們。
首先是 Ken Thompson 的 Unix 哲學(xué)成為模塊化軟件設(shè)計(jì)和計(jì)算的強(qiáng)大模型。Unix 哲學(xué)推薦使用小型的、專用的程序組合起來完成復(fù)雜的整體任務(wù)。由于 Unix 是圍繞文件和管道設(shè)計(jì)的,因此這種“管道”模式的輸入和輸出程序的組合成一組線性的輸入操作,現(xiàn)在仍然流行。
事實(shí)上,目前的云功能即服務(wù)(FaaS)或無服務(wù)器計(jì)算模型要?dú)w功于Unix哲學(xué)的許多傳統(tǒng)。
快速增長和競爭
到70年代末和80年代,Unix成為了一個(gè)操作系統(tǒng)家族的起源,它遍及了研究和學(xué)術(shù)機(jī)構(gòu)以及日益增長的商業(yè)Unix操作系統(tǒng)業(yè)務(wù)領(lǐng)域。Unix不是開源軟件,Unix源代碼可以通過與它的所有者AT&T達(dá)成協(xié)議來獲得許可。第一個(gè)已知的軟件許可證于 1975 年出售給伊利諾伊大學(xué)University of Illinois。
Unix在學(xué)術(shù)界迅速發(fā)展,在Ken Thompson在上世紀(jì) 70 年代的學(xué)術(shù)假期間,伯克利成為一個(gè)重要的活動(dòng)中心。通過在伯克利的各種有關(guān)Unix的活動(dòng),Unix軟件的一種新的交付方式誕生了:伯克利軟件發(fā)行版Berkeley Software Distribution(BSD)。
最初,BSD不是 AT&T Unix 的替代品,而是一種添加類似于附加軟件和功能。在1979年, 2BSD(第二版伯克利軟件發(fā)行版)出現(xiàn)時(shí),伯克利研究生Bill Joy已經(jīng)添加了現(xiàn)在非常有名的程序,例如vi和C shell(/bin/csh)。
除了成為Unix家族中最受歡迎的分支之一的BSD之外,Unix的商業(yè)產(chǎn)品的爆發(fā)貫穿了二十世紀(jì)八、九十年代,其中包括HP-UX、IBM 的 AIX、 Sun 的 Solaris、 Sequent 和 Xenix 等。
隨著分支從根源頭發(fā)展壯大,“Unix 戰(zhàn)爭”開始了,標(biāo)準(zhǔn)化成為社區(qū)的新焦點(diǎn)。POSIX標(biāo)準(zhǔn)誕生于 1988 年,其他標(biāo)準(zhǔn)化后續(xù)工作也開始通過 The Open Group 在 90 年代到來。
在此期間,AT&T 和 Sun 發(fā)布了 System V Release 4(SVR4),許多商業(yè)供應(yīng)商都采用了這一版本。
另外,BSD 系列操作系統(tǒng)多年來一直在增長,最終一些開源的變體在現(xiàn)在熟悉的BSD許可證下發(fā)布。這包括 FreeBSD、 OpenBSD 和 NetBSD,每個(gè)在 Unix 服務(wù)器行業(yè)的目標(biāo)市場略有不同。這些 Unix 變體今天仍然有一些在使用,盡管人們已經(jīng)看到它們的服務(wù)器市場份額縮小到個(gè)位數(shù)字(或更低)。
在當(dāng)今的所有Unix系統(tǒng)中,BSD可能擁有最大的安裝基數(shù)。另外,每臺(tái)Apple Mac硬件設(shè)備從歷史的角度看都可以算做是BSD ,這是因?yàn)镺S X(現(xiàn)在是 macOS)操作系統(tǒng)是BSD衍生產(chǎn)品。
雖然Unix的全部歷史及其學(xué)術(shù)和商業(yè)變體可能需要更多的篇幅,但為了我們文章的重點(diǎn),讓我們來討論Linux的興起。
進(jìn)入Linux
今天我們所說的Linux操作系統(tǒng)實(shí)際上是90年代初期的兩個(gè)努力的結(jié)合。Richard Stallman希望創(chuàng)建一個(gè)真正的自由而開放源代碼的專有Unix系統(tǒng)的替代品。他正在以GNU的名義開發(fā)實(shí)用程序和程序,這是一種遞歸的說法,意思是“GNU‘s not Unix!”。
雖然當(dāng)時(shí)有一個(gè)內(nèi)核項(xiàng)目正在進(jìn)行,但事實(shí)證明這是一件很困難的事情,而且沒有內(nèi)核,自由和開源操作系統(tǒng)的夢(mèng)想無法實(shí)現(xiàn)。
而這是 Linus Torvald 的工作 —— 生產(chǎn)出一種可工作和可行的內(nèi)核,他稱之為 Linux -- 它將整個(gè)操作系統(tǒng)帶入了生活。鑒于 Linus 使用了幾個(gè)GNU 工具(例如 GNU 編譯器集合,即 GCC),GNU工具和Linux內(nèi)核的結(jié)合是完美的搭配。
Linux發(fā)行版采用了GNU的組件、Linux 內(nèi)核、MIT 的 X-Windows GUI以及可以在開源 BSD 許可下使用的其它 BSD 組件。
像 Slackware 和 Red Hat 這樣的發(fā)行版早期的流行給了 20 世紀(jì) 90 年代的“普通 PC 用戶”一個(gè)進(jìn)入 Linux 操作系統(tǒng)的機(jī)會(huì),并且讓他們?cè)诠ぷ骱蛯W(xué)術(shù)生活中可以使用許多 Unix 系統(tǒng)特有的功能和實(shí)用程序。
由于所有 Linux 組件都是自由和開放的源代碼,任何人都可以通過一些努力來創(chuàng)建一個(gè)Linux發(fā)行版,所以不久后發(fā)行版的總數(shù)達(dá)到了數(shù)百個(gè)。
今天,distrowatch.com列出了 312 種各種形式的獨(dú)特的 Linux 發(fā)行版。當(dāng)然,許多開發(fā)人員通過云提供商或使用流行的免費(fèi)發(fā)行版來使用Linux,如 Fedora、 Canonical 的 Ubuntu、 Debian、 Arch Linux、 Gentoo 和許多其它變體。
隨著包括IBM在內(nèi)的許多企業(yè)從專有Unix遷移到Linux上并提供了中間件和軟件解決方案,商用Linux產(chǎn)品在自由和開源組件之上提供支持變得可行。
紅帽公司圍繞Red Hat Enterprise Linux(紅帽企業(yè)版 Linux) 建立了商業(yè)支持模式,德國供應(yīng)商 SUSE 使用 SUSE Linux Enterprise Server(SLES)也提供了這種模式。
比較Unix和Linux
到目前為止,我們已經(jīng)了解了Unix的歷史以及Linux的興起,以及GNU/自由軟件基金會(huì)對(duì) Unix 的自由和開源替代品的支持。讓我們來看看這兩個(gè)操作系統(tǒng)之間的差異,它們有許多共同的傳統(tǒng)和許多相同的目標(biāo)。
從用戶體驗(yàn)角度來看,兩者差不多!Linux的很大吸引力在于操作系統(tǒng)在許多硬件體系結(jié)構(gòu)(包括現(xiàn)代 PC)上的可用性以及類似使用Unix系統(tǒng)管理員和用戶熟悉的工具的能力。
由 POSIX的標(biāo)準(zhǔn)和合規(guī)性,在Unix上編寫的軟件可以針對(duì)Linux操作系統(tǒng)進(jìn)行編譯,通常只有少量的移植工作量。在很多情況下,Shell腳本可以在Linux上直接使用。雖然一些工具在Unix和Linux之間有著略微不同的標(biāo)志或命令行選項(xiàng),但許多工具在兩者上都是相同的。
一方面要注意的是,macOS硬件和操作系統(tǒng)作為主要針對(duì)Linux的開發(fā)平臺(tái)的流行可能歸因于類BSD的macOS操作系統(tǒng)。許多用于 Linux 系統(tǒng)的工具和腳本可以在macOS終端內(nèi)輕松工作。Linux上的許多開源軟件組件都可以通過Homebrew等工具輕松獲得。
Linux和Unix之間的其他差異主要與許可模式有關(guān):開源與專有許可軟件。
另外,在Unix發(fā)行版中缺少一個(gè)影響軟件和硬件供應(yīng)商的通用內(nèi)核。對(duì)于Linux,供應(yīng)商可以為特定的硬件設(shè)備創(chuàng)建設(shè)備驅(qū)動(dòng)程序,并期望在合理的范圍內(nèi)它可以在大多數(shù)發(fā)行版上運(yùn)行。
由于Unix家族的商業(yè)和學(xué)術(shù)分支,供應(yīng)商可能必須為Unix的變體編寫不同的驅(qū)動(dòng)程序,并且需要許可和其他相關(guān)的權(quán)限才能訪問 SDK 或軟件的分發(fā)模型,以跨越多個(gè)二進(jìn)制設(shè)備驅(qū)動(dòng)程序的 Unix 變體。
隨著這兩個(gè)社區(qū)在過去十年中的成熟,Linux的許多優(yōu)點(diǎn)已經(jīng)在Unix世界中被采用。
當(dāng)開發(fā)人員需要來自不屬于Unix的GNU程序的功能時(shí),許多 GNU 實(shí)用程序可作為 Unix 系統(tǒng)的附件提供
。例如,IBM 的 AIX 為 Linux 應(yīng)用程序提供了一個(gè) AIX Toolbox,其中包含數(shù)百個(gè) GNU 軟件包(如 Bash、 GCC、 OpenLDAP 和許多其他軟件包),這些軟件包可添加到 AIX 安裝包中以簡化 Linux 和基于 Unix 的 AIX 系統(tǒng)之間的過渡。
專有的Unix仍然活著而且還不錯(cuò),許多主要供應(yīng)商承諾支持其當(dāng)前版本,直到2020年。
不言而喻,Unix還會(huì)在可預(yù)見的將來一直出現(xiàn)。此外,Unix的BSD分支是開源的,而 NetBSD、 OpenBSD 和 FreeBSD 都有強(qiáng)大的用戶基礎(chǔ)和開源社區(qū),它們可能不像 Linux 那樣顯眼或活躍,但在最近的服務(wù)器報(bào)告中,在 Web 服務(wù)等領(lǐng)域它們遠(yuǎn)高于專有 Unix 的數(shù)量。
Linux已經(jīng)顯示出其超越 Unix 的顯著優(yōu)勢(shì)在于其在大量硬件平臺(tái)和設(shè)備上的可用性。
樹莓派Raspberry Pi受到業(yè)余愛好者的歡迎,它是由Linux驅(qū)動(dòng)的,為運(yùn)行Linux的各種物聯(lián)網(wǎng)設(shè)備打開了大門。我們已經(jīng)提到Android 設(shè)備,汽車(包括 Automotive Grade Linux)和智能電視,其中 Linux 占有巨大的市場份額。
這個(gè)星球上的每個(gè)云提供商都提供運(yùn)行Linux的虛擬服務(wù)器,而且當(dāng)今許多最受歡迎的原生云架構(gòu)都是基于 Linux 的,無論你是在談?wù)撊萜鬟\(yùn)行時(shí)還是 Kubernetes,或者是許多正在流行的無服務(wù)器平臺(tái)。
其中一個(gè)最顯著的代表 Linux的優(yōu)勢(shì)是近年來微軟的轉(zhuǎn)變。如果你十年前告訴軟件開發(fā)人員,Windows操作系統(tǒng)將在2016 年“運(yùn)行 Linux”,他們中的大多數(shù)人會(huì)歇斯底里地大笑。
但是 Windows Linux子系統(tǒng)(WSL)的存在和普及,以及最近宣布的諸如 Docker 的 Windows 移植版,包括 LCOW(Windows 上的 Linux 容器)支持等功能都證明了 Linux 在整個(gè)軟件世界中所產(chǎn)生的影響 —— 而且顯然還會(huì)繼續(xù)存在。