摘要: 若是你是位2、三十歲的軟件開發人員,那麼你已經成長在一個由 Linux 主導的世界。數十年來,它一直是數據中心的重要參與者,儘管很難找到明確的操做系統市場份額報告,但 Linux 的數據中心操做系統份額可能高達 70%,而 Windows 及其變體幾乎涵蓋了全部剩餘的百分比。程序員
若是你是位2、三十歲的軟件開發人員,那麼你已經成長在一個由 Linux 主導的世界。數十年來,它一直是數據中心的重要參與者,儘管很難找到明確的操做系統市場份額報告,但 Linux 的數據中心操做系統份額可能高達 70%,而 Windows 及其變體幾乎涵蓋了全部剩餘的百分比。使用任何主流公共雲服務的開發人員均可以預期目標系統會運行 Linux。近些年來,隨着 Android 和基於 Linux 的嵌入式系統在智能手機、電視、汽車和其餘設備中的應用,Linux 已經隨處可見。shell
即使如此,大多數軟件開發人員,甚至是那些在這場歷史悠久的 「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 的商業產品的爆發貫穿了二十世紀8、九十年代,其中包括 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 在整個軟件世界中所產生的影響 —— 並且顯然還會繼續存在。