Linux vs. Unix:有什麼不同?

發表於2018-06-06

深入瞭解這兩個有許多共同的傳統和相同的目標的作業系統之間的不同。

如果你是位二、三十歲的軟體開發人員,那麼你已經成長在一個由 Linux 主導的世界。數十年來,它一直是資料中心的重要參與者,儘管很難找到明確的作業系統市場份額報告,但 Linux 的資料中心作業系統份額可能高達 70%,而 Windows 及其變體幾乎涵蓋了所有剩餘的百分比。使用任何主流公共雲服務的開發人員都可以預期目標系統會執行 Linux。近些年來,隨著 Android 和基於 Linux 的嵌入式系統在智慧手機、電視、汽車和其他裝置中的應用,Linux 已經隨處可見。

即便如此,大多數軟體開發人員,甚至是那些在這場歷史悠久的 “Linux 革命”中長大的軟體開發人員,也都聽過說 Unix。它聽起來與 Linux 相似,你可能已經聽到人們互換使用這些術語。或者你也許聽說過 Linux 被稱為“類 Unix ”作業系統。

那麼,Unix 是什麼?漫畫喜歡將它畫成巫師一樣留著“灰鬍子”的形象,坐在發光的綠色螢幕後面,寫著 C 程式碼和 shell 指令碼,由老式的、滴灌的咖啡提供動力。但是,Unix 的歷史比上世紀 70 年代那些留著鬍子的 C 程式設計師要豐富得多。雖然詳細介紹 Unix 歷史和 “Unix 與 Linux” 比較的文章比比皆是,但本文將提供高階背景和列出這些互補世界之間的主要區別。

Unix 的起源

Unix 的歷史始於 20 世紀 60 年代後期的 AT&T 貝爾實驗室,有一小組程式設計師希望為 PDP-7 編寫一個多工、多使用者作業系統。這個貝爾實驗室研究機構的團隊中最著名的兩名成員是 Ken Thompson 和 Dennis Ritchie。儘管 Unix 的許多概念都是其前身(Multics)的衍生物,但 Unix 團隊早在 70 年代就決定用 C 語言重寫這個小型作業系統,這是將 Unix 與其他作業系統區分開來的原因。當時,作業系統很少,更不要說可移植的作業系統。相反,由於它們的設計和底層語言的本質,作業系統與他們所編寫的硬體平臺緊密相關。而通過 C 語言重構 Unix、Unix 現在可以移植到許多硬體體系結構中。

除了這種新的可移植性,之所以使得 Unix 迅速擴充套件到貝爾實驗室以外的其他研究和學術機構甚至商業用途,是因為作業系統設計原則的幾個關鍵點吸引了使用者和程式設計師們。首先是 Ken Thompson 的 Unix 哲學成為模組化軟體設計和計算的強大模型。Unix 哲學推薦使用小型的、專用的程式組合起來完成複雜的整體任務。由於 Unix 是圍繞檔案和管道設計的,因此這種“管道”模式的輸入和輸出程式的組合成一組線性的輸入操作,現在仍然流行。事實上,目前的雲功能即服務(FaaS)或無伺服器計算模型要歸功於 Unix 哲學的許多傳統。

快速增長和競爭

到 70 年代末和 80 年代,Unix 成為了一個作業系統家族的起源,它遍及了研究和學術機構以及日益增長的商業 Unix 作業系統業務領域。Unix 不是開源軟體,Unix 原始碼可以通過與它的所有者 AT&T 達成協議來獲得許可。第一個已知的軟體許可證於 1975 年出售給伊利諾伊大學University of Illinois。

Unix 在學術界迅速發展,在 Ken Thompson 在上世紀 70 年代的學術假期間,伯克利成為一個重要的活動中心。通過在伯克利的各種有關 Unix 的活動,Unix 軟體的一種新的交付方式誕生了:伯克利軟體發行版Berkeley Software Distribution(BSD)。最初,BSD 不是 AT&T Unix 的替代品,而是一種新增類似於附加軟體和功能。在 1979 年, 2BSD(第二版伯克利軟體發行版)出現時,伯克利研究生 Bill Joy 已經新增了現在非常有名的程式,例如 vi 和 C shell(/bin/csh)。

除了成為 Unix 家族中最受歡迎的分支之一的 BSD 之外,Unix 的商業產品的爆發貫穿了二十世紀八、九十年代,其中包括 HP-UX、IBM 的 AIX、 Sun 的 Solaris、 Sequent 和 Xenix 等。隨著分支從根源頭髮展壯大,“Unix 戰爭”開始了,標準化成為社群的新焦點。POSIX 標準誕生於 1988 年,其他標準化後續工作也開始通過 The Open Group 在 90 年代到來。

在此期間,AT&T 和 Sun 釋出了 System V Release 4(SVR4),許多商業供應商都採用了這一版本。另外,BSD 系列作業系統多年來一直在增長,最終一些開源的變體在現在熟悉的 BSD許可證下發布。這包括 FreeBSD、 OpenBSD 和 NetBSD,每個在 Unix 伺服器行業的目標市場略有不同。這些 Unix 變體今天仍然有一些在使用,儘管人們已經看到它們的伺服器市場份額縮小到個位數字(或更低)。在當今的所有 Unix 系統中,BSD 可能擁有最大的安裝基數。另外,每臺 Apple Mac 硬體裝置從歷史的角度看都可以算做是 BSD ,這是因為 OS X(現在是 macOS)作業系統是 BSD 衍生產品。

雖然 Unix 的全部歷史及其學術和商業變體可能需要更多的篇幅,但為了我們文章的重點,讓我們來討論 Linux 的興起。

進入 Linux

今天我們所說的 Linux 作業系統實際上是 90 年代初期的兩個努力的結合。Richard Stallman 希望建立一個真正的自由而開放原始碼的專有 Unix 系統的替代品。他正在以 GNU 的名義開發實用程式和程式,這是一種遞迴的說法,意思是“GNU‘s not Unix!”。雖然當時有一個核心專案正在進行,但事實證明這是一件很困難的事情,而且沒有核心,自由和開源作業系統的夢想無法實現。而這是 Linus Torvald 的工作 —— 生產出一種可工作和可行的核心,他稱之為 Linux — 它將整個作業系統帶入了生活。鑑於 Linus 使用了幾個 GNU 工具(例如 GNU 編譯器集合,即 GCC),GNU 工具和 Linux 核心的結合是完美的搭配。

Linux 發行版採用了 GNU 的元件、Linux 核心、MIT 的 X-Windows GUI 以及可以在開源 BSD 許可下使用的其它 BSD 元件。像 Slackware 和 Red Hat 這樣的發行版早期的流行給了 20 世紀 90 年代的“普通 PC 使用者”一個進入 Linux 作業系統的機會,並且讓他們在工作和學術生活中可以使用許多 Unix 系統特有的功能和實用程式。

由於所有 Linux 元件都是自由和開放的原始碼,任何人都可以通過一些努力來建立一個 Linux 發行版,所以不久後發行版的總數達到了數百個。今天,distrowatch.com 列出了 312 種各種形式的獨特的 Linux 發行版。當然,許多開發人員通過雲提供商或使用流行的免費發行版來使用 Linux,如 Fedora、 Canonical 的 Ubuntu、 Debian、 Arch Linux、 Gentoo 和許多其它變體。隨著包括 IBM 在內的許多企業從專有 Unix 遷移到 Linux 上並提供了中介軟體和軟體解決方案,商用 Linux 產品在自由和開源元件之上提供支援變得可行。紅帽公司圍繞 Red Hat Enterprise Linux(紅帽企業版 Linux) 建立了商業支援模式,德國供應商 SUSE 使用 SUSE Linux Enterprise Server(SLES)也提供了這種模式。

比較 Unix 和 Linux

到目前為止,我們已經瞭解了 Unix 的歷史以及 Linux 的興起,以及 GNU/自由軟體基金會對 Unix 的自由和開源替代品的支援。讓我們來看看這兩個作業系統之間的差異,它們有許多共同的傳統和許多相同的目標。

從使用者體驗角度來看,兩者差不多!Linux 的很大吸引力在於作業系統在許多硬體體系結構(包括現代 PC)上的可用性以及類似使用 Unix 系統管理員和使用者熟悉的工具的能力。

由於 POSIX 的標準和合規性,在 Unix 上編寫的軟體可以針對 Linux 作業系統進行編譯,通常只有少量的移植工作量。在很多情況下,Shell 指令碼可以在 Linux 上直接使用。雖然一些工具在 Unix 和 Linux 之間有著略微不同的標誌或命令列選項,但許多工具在兩者上都是相同的。

一方面要注意的是,macOS 硬體和作業系統作為主要針對 Linux 的開發平臺的流行可能歸因於類 BSD 的 macOS 作業系統。許多用於 Linux 系統的工具和指令碼可以在 macOS 終端內輕鬆工作。Linux 上的許多開源軟體元件都可以通過 Homebrew 等工具輕鬆獲得。

Linux 和 Unix 之間的其他差異主要與許可模式有關:開源與專有許可軟體。另外,在 Unix 發行版中缺少一個影響軟體和硬體供應商的通用核心。對於 Linux,供應商可以為特定的硬體裝置建立裝置驅動程式,並期望在合理的範圍內它可以在大多數發行版上執行。由於 Unix 家族的商業和學術分支,供應商可能必須為 Unix 的變體編寫不同的驅動程式,並且需要許可和其他相關的許可權才能訪問 SDK 或軟體的分發模型,以跨越多個二進位制裝置驅動程式的 Unix 變體。

隨著這兩個社群在過去十年中的成熟,Linux 的許多優點已經在 Unix 世界中被採用。當開發人員需要來自不屬於 Unix 的 GNU 程式的功能時,許多 GNU 實用程式可作為 Unix 系統的附件提供。例如,IBM 的 AIX 為 Linux 應用程式提供了一個 AIX Toolbox,其中包含數百個 GNU 軟體包(如 Bash、 GCC、 OpenLDAP 和許多其他軟體包),這些軟體包可新增到 AIX 安裝包中以簡化 Linux 和基於 Unix 的 AIX 系統之間的過渡。

專有的 Unix 仍然活著而且還不錯,許多主要供應商承諾支援其當前版本,直到 2020 年。不言而喻,Unix 還會在可預見的將來一直出現。此外,Unix 的 BSD 分支是開源的,而 NetBSD、 OpenBSD 和 FreeBSD 都有強大的使用者基礎和開源社群,它們可能不像 Linux 那樣顯眼或活躍,但在最近的伺服器報告中,在 Web 服務等領域它們遠高於專有 Unix 的數量。

Linux 已經顯示出其超越 Unix 的顯著優勢在於其在大量硬體平臺和裝置上的可用性。樹莓派Raspberry Pi受到業餘愛好者的歡迎,它是由 Linux 驅動的,為執行 Linux 的各種物聯網裝置開啟了大門。我們已經提到了 Android 裝置,汽車(包括 Automotive Grade Linux)和智慧電視,其中 Linux 佔有巨大的市場份額。這個星球上的每個雲提供商都提供執行 Linux 的虛擬伺服器,而且當今許多最受歡迎的原生雲架構都是基於 Linux 的,無論你是在談論容器執行時還是 Kubernetes,或者是許多正在流行的無伺服器平臺。

其中一個最顯著的代表 Linux 的優勢是近年來微軟的轉變。如果你十年前告訴軟體開發人員,Windows 作業系統將在 2016 年“執行 Linux”,他們中的大多數人會歇斯底里地大笑。 但是 Windows Linux 子系統(WSL)的存在和普及,以及最近宣佈的諸如 Docker 的 Windows 移植版,包括 LCOW(Windows 上的 Linux 容器)支援等功能都證明了 Linux 在整個軟體世界中所產生的影響 —— 而且顯然還會繼續存在。

 

相關文章