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