Unix vs. Linux:有什麼不同?

Linux愛好者2018-06-07 20:49:10

(點擊上方藍字,快速關注我們)


英文:Phil Estes,翻譯:Linux中國/MjSeven

linux.cn/article-9717-1.html


如果你是位二、三十歲的開發人員,那麼你已經成長在一個由 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 在整個軟件世界中所產生的影響 —— 而且顯然還會繼續存在。



看完本文有收穫?請分享給更多人

關注「Linux 愛好者」,提升Linux技能

閱讀原文

TAGS: