Linux 操作系統(tǒng):一個(gè)現(xiàn)代工程奇跡
Linux 已經(jīng)有些年頭了。到 2012 年,Linux 已經(jīng) 21 周歲了,它是一個(gè)支持多種使用模型的成熟操作系統(tǒng)。很難將 Linux 僅當(dāng)成一個(gè)操作系統(tǒng),它更像是個(gè)變色龍。它靈活的模塊化內(nèi)核可支持多種使用模型(從最大的超級(jí)計(jì)算機(jī)到最小的嵌入式設(shè)備),因此很難將它劃分為具體的某一類,只能是當(dāng)成一項(xiàng)使能技術(shù)。事實(shí)上,Linux 是一個(gè)平臺(tái)。它是創(chuàng)建新產(chǎn)品的一項(xiàng)關(guān)鍵技術(shù)。其中有些產(chǎn)品才剛剛出現(xiàn)不久。
我們快速瀏覽一下 Linux 的基本架構(gòu)及一些基本原則。然后,看看 Linux 如何將這些原則應(yīng)用于多種使用模型,以及為什么它是一個(gè)平臺(tái),而不僅僅是一個(gè)操作系統(tǒng)。
Linux 是什么?
從表面上看,Linux 是一個(gè)操作系統(tǒng)。如 圖 1 所示,Linux 包含一個(gè)內(nèi)核(管理硬件和軟件資源的核心代碼)和一組用戶應(yīng)用程序(例如庫(kù)、窗口管理器和應(yīng)用程序)。
圖 1. Linux 表面
這個(gè)簡(jiǎn)單的圖表顯示了一些容易被忽視的重要原則。Linux 棧的底部是一組依賴于架構(gòu)的代碼,它能讓 Linux 在多種硬件平臺(tái)(ARM、PowerPC、Tilera TILE 等)上運(yùn)行。當(dāng)然,這一項(xiàng)功能是由 GNU 工具鏈所賦予的,它能實(shí)現(xiàn) Linux 可移植性。
在可移植性 方面,Linux 是它自身的類。驅(qū)動(dòng)程序子系統(tǒng)(功能多樣)支持動(dòng)態(tài)加載模塊,而不會(huì)對(duì)性能產(chǎn)生任何影響,它支持模塊化(除了更加動(dòng)態(tài) 的平臺(tái)外)。Linux 還包含內(nèi)核級(jí)安全性(多種方案),可支持安全的 平臺(tái)。在外部文件系統(tǒng)方面,Linux 可最大限度支持所有操作系統(tǒng)的文件系統(tǒng),例如,通過(guò)設(shè)計(jì)模塊化提供靈活性。Linux 不僅實(shí)現(xiàn)了標(biāo)準(zhǔn)調(diào)度特性,而且實(shí)現(xiàn)了實(shí)時(shí) 調(diào)度(包括對(duì)中斷延遲的保證)。
最后,Linux 是開放式的,這意味著幾乎任何人都能查看或改進(jìn)其源代碼。這種開放性也將產(chǎn)生漏洞的可能性降到最低,從而形成一個(gè)更加安全的 平臺(tái)。許多公司都對(duì) Linux 作出貢獻(xiàn),使它能不斷支持各種使用模型,同時(shí)保持其核心屬性。
這七項(xiàng)重要原則不是 Linux 的全部原則,但這些讓 Linux 成為了支持多種使用模型的通用平臺(tái)。而且,Linux 在這些使用模型中是一致的,這不僅體現(xiàn)在設(shè)計(jì)原則,還有內(nèi)核本身。而其他操作系統(tǒng)則不是這樣(例如 Windows®臺(tái)式版、服務(wù)器版,或嵌入式,以及 Mac OS X 或 Apple iOS),它們將產(chǎn)品拆分以支持其他使用模型。
Linux 在哪?
也許回答哪里有 Linux 比回答哪里沒(méi)有 Linux 要難。Linux 其變形和擴(kuò)展能力在所有計(jì)算領(lǐng)域都能找到(甚至一些還未完全定義的領(lǐng)域)。本節(jié)將探索一些主要的計(jì)算領(lǐng)域,包括桌面/筆記本、服務(wù)器、集群、大型機(jī)、超級(jí)計(jì)算機(jī)、掌上電腦/平板電腦、嵌入式、虛擬化和試驗(yàn)機(jī)(見(jiàn) 圖 2)。
圖 2. Linux 屬性和支持領(lǐng)域
桌面和筆記本
在桌面和筆記本領(lǐng)域,很多用戶使用 Linux,這也是 Linux 競(jìng)爭(zhēng)最激烈的領(lǐng)域。最新的市場(chǎng)占有率調(diào)查數(shù)據(jù)顯示,Linux 占有 1.5% 的臺(tái)式電腦市場(chǎng),32% 的筆記本市場(chǎng)。這個(gè)數(shù)字可能有點(diǎn)低,但在開發(fā)人員中,我看到使用 Linux 多于其他操作系統(tǒng)。
Linux 一開始是一個(gè)簡(jiǎn)單的實(shí)驗(yàn)性的操作系統(tǒng),于 1994 年推出 XFree86,這是一個(gè)窗口管理器,標(biāo)志著一個(gè)新的桌面操作系統(tǒng)的產(chǎn)生。目前,Linux 上有幾種窗口管理器可用(既是賜福又是禍害),讓用戶能夠根據(jù)需要進(jìn)行定制。而且,Linux 能根據(jù)處理器功能自動(dòng)擴(kuò)展(如多核和對(duì)稱多線程),從而高效安排進(jìn)程并兼顧性能。
服務(wù)器
在服務(wù)器市場(chǎng)(包括 Web 服務(wù)器、郵件服務(wù)器、Domain Name System 服務(wù)器及其他后端設(shè)備),Linux 占主導(dǎo)地位。最近的調(diào)查發(fā)現(xiàn),60% 的服務(wù)器使用 Linux。除了傳統(tǒng)的 Web 服務(wù),Linux 還支撐了一些最大的 Internet 產(chǎn)業(yè)(Facebook、eBay、Twitter、Amazon 等),并滿足不同的使用模型和需求。除了傳統(tǒng)的選擇之外(例如 Web 或郵件),Linux 還提供了大量的 Web 服務(wù)(以及這些服務(wù)的多種選項(xiàng))。
集群和分布式計(jì)算
Linux 不僅是集群和分布式計(jì)算模型中的重要組成部分,它還對(duì)很多新使用模型核心起著驅(qū)動(dòng)作用。目前快速發(fā)展的兩個(gè)重要模型是云計(jì)算和大數(shù)據(jù)。
云計(jì)算就是將 IT 作為服務(wù)交付,它依賴于共享資源集群,可以根據(jù)給定應(yīng)用程序的需要進(jìn)行調(diào)整。云也依賴于虛擬化以支持大規(guī)?;A(chǔ)架構(gòu)中節(jié)點(diǎn)的自動(dòng)管理。在云環(huán)境中,66% 使用 Linux 作為主要平臺(tái)。
Linux 也在推動(dòng)自身成為數(shù)據(jù)科學(xué)的平臺(tái)。Internet 會(huì)擴(kuò)展可收集到的數(shù)據(jù)量,在處理這些數(shù)據(jù)的過(guò)程中會(huì)產(chǎn)生新問(wèn)題以識(shí)別有價(jià)值的模式?,F(xiàn)在所謂的大數(shù)據(jù) 是在 Linux 上開發(fā)的,可以用可擴(kuò)展方式操作數(shù)據(jù),這超越了以前傳統(tǒng)方法。Hadoop 及其生態(tài)環(huán)境就是 Linux 開放性的成果,有眾多的開發(fā)人員精通此平臺(tái)。
大型機(jī)
1991 年,一位著名的編輯預(yù)測(cè)大型機(jī)將在 1996 年就被取代。20 多年過(guò)去了,大型機(jī)仍然在生產(chǎn)和出售中,并且很多都運(yùn)行 Linux。IBM 從 2000 年開始在大型機(jī)上支持 Linux(例如流行的 IBM® System z®)并提供各個(gè)環(huán)境下相同的用戶體驗(yàn)。Michael Vizard 最近的一篇文章指出約 25% 的新大型機(jī)負(fù)載依賴于 Linux。
超級(jí)計(jì)算機(jī)
超級(jí)計(jì)算機(jī)領(lǐng)域一直是標(biāo)榜速度最快的軍備競(jìng)賽,從 Oak Ridge 國(guó)家實(shí)驗(yàn)室的 Jaguar 超級(jí)計(jì)算機(jī)(2009 年)到中國(guó)的 Tianhe-I(2010 年),再到當(dāng)前領(lǐng)先者日本 RIKEN Kei 計(jì)算機(jī)(2011 年)。在 2012 年,IBM 將推出 Sequoia 超級(jí)計(jì)算機(jī),預(yù)計(jì)性能超過(guò) RIKEN 一倍。這些超級(jí)計(jì)算機(jī)的共同之處就是都運(yùn)行 Linux。Linux 不僅高效,而且還適用于各種硬件平臺(tái),有助于提高性能。這一點(diǎn)也不奇怪,有 90% 的超級(jí)計(jì)算機(jī)都運(yùn)行 Linux。
移動(dòng)設(shè)備和平板電腦
在更有限的消費(fèi)設(shè)備領(lǐng)域,移動(dòng)設(shè)備和平板電腦展現(xiàn)出強(qiáng)勁的增長(zhǎng)勢(shì)頭。這些設(shè)備一般都配有 Linux 內(nèi)核和用戶界面圖形 (GUI)。該領(lǐng)域的一個(gè)重要案例就是 Google Android 操作系統(tǒng),它可用于智能手機(jī)和平板電腦中。今天,超過(guò) 25% 的智能手機(jī)運(yùn)行某一版本的 Linux (主要是 Android),大約 40% 的平板電腦運(yùn)行 Android。
這些設(shè)備依賴于基于 ARM 的處理器(系統(tǒng)在芯片上),實(shí)現(xiàn)高性能、低能耗。無(wú)論底層平臺(tái)是什么,它們都是 Linux 設(shè)備,而不是內(nèi)核和應(yīng)用程序的交叉。
Microsoft® 最近確認(rèn),Windows on ARM (WOA) 平板電腦只支持針對(duì)該平臺(tái)開發(fā)的應(yīng)用程序(換句話說(shuō),無(wú)法在平板電腦上運(yùn)行老的應(yīng)用程序)。相比之下, Linux 支持高度可移植的應(yīng)用程序,而不是受限制的、封閉式的應(yīng)用程序生態(tài)系統(tǒng)。
嵌入式設(shè)備
最后是嵌入式設(shè)備,它有著各種限制(處理器性能、資源如內(nèi)存等)。Linux 是大多數(shù)設(shè)備的理想選擇,因?yàn)樗芟蛳抡{(diào)整并可以使用市面上大多數(shù)嵌入式處理器。這樣的靈活性使得 Linux 廣泛用于電視、車載娛樂(lè)、導(dǎo)航系統(tǒng)及多種其他設(shè)備中。
Linux 具有高度可定制特性,并以低能耗為重心。為了確保低能耗,Less Watts 啟動(dòng)了一個(gè)追蹤 Linux 內(nèi)核版本的能源消耗項(xiàng)目。該項(xiàng)目主要關(guān)注 Intel 平臺(tái),但對(duì)其他處理器也有用。
Linux 是一個(gè)相當(dāng)標(biāo)準(zhǔn)的嵌入式設(shè)備平臺(tái),能決定設(shè)備的成功或失?。ㄒ灾С挚焖賳?dòng)和開發(fā))。最近出現(xiàn)了一個(gè)很有趣的設(shè)備,稱為 Raspberry Pi,它是基于 ARM 的信用卡大小的計(jì)算機(jī),運(yùn)行 Linux 并被用作教授編程的教學(xué)設(shè)備。該設(shè)備預(yù)計(jì)售價(jià)在 35 美元,但尚未零售。
虛擬化平臺(tái)
Linux 推動(dòng)創(chuàng)新的最有趣領(lǐng)域之一就是虛擬化。Linux 是各種虛擬化方法的操作系統(tǒng)來(lái)源,無(wú)論是平臺(tái)或半虛擬化 (para-virtualization)、操作系統(tǒng)虛擬化,或是更模糊的概念如合作虛擬化。Linux 作為一個(gè)操作系統(tǒng),能將自身轉(zhuǎn)換成管理程序(例如內(nèi)核虛擬機(jī) [KVM])并托管很多研究管理程序。為了提高虛擬化的效率,Linux 實(shí)現(xiàn)了 Kernel SamePage Merging 技術(shù)以便能高效去除重復(fù)內(nèi)存頁(yè)。
Linux 還推動(dòng)虛擬化技術(shù)更進(jìn)一步,稱為嵌套虛擬化。嵌套,顧名思意,可以讓管理程序托管客戶管理程序,它反過(guò)來(lái)又托管一組客戶虛擬機(jī)。雖然乍一看此用例有點(diǎn)奇怪,但嵌套虛擬化將改變?cè)朴?jì)算并擴(kuò)展可托管的應(yīng)用程序類型。目前,Linux KVM 支持嵌套虛擬化。
實(shí)驗(yàn)平臺(tái)
最后也是相當(dāng)重要的是,Linux 本身的基礎(chǔ),它是一個(gè)實(shí)驗(yàn)平臺(tái),通過(guò)它來(lái)探索許多新想法。在 1991 年 UNIX® 推出 20 年以后,Linux 作為一個(gè)玩具式操作系統(tǒng)出現(xiàn)。今天,Linux 已經(jīng)在文件系統(tǒng)研究、集群計(jì)算、云和虛擬化改進(jìn)中作為實(shí)驗(yàn)平臺(tái),拓展了單一操作系統(tǒng)內(nèi)核的極限,可應(yīng)用到許多使用模型中。Linux 作為平臺(tái),可以通過(guò)同時(shí)使用 Linux 和大量開源部件來(lái)加快實(shí)驗(yàn)。這些成果中包含大量使用 Linux 構(gòu)建的相關(guān)技術(shù),其中包括 HP webOS、Google Chrome OS 和 Android。
Linux 引入的一個(gè)有趣變化是,增加了與底層硬件平臺(tái)的無(wú)關(guān)性。Linux 能夠展現(xiàn)相同的用戶體驗(yàn),而不管底層硬件架構(gòu)是什么。因此無(wú)論云使用的是 AMD x86 服務(wù)器還是低能耗的基于 ARM 的產(chǎn)品,在 Linux 上運(yùn)行的應(yīng)用程序都可以從物理架構(gòu)中抽象出來(lái)。這種抽象化可讓用戶在根據(jù)需求的平臺(tái)上做決定,而不是被綁定到通用但又過(guò)時(shí)和低效的架構(gòu)中。Linux 就等于選擇。
Linux 還是自包含的集成開發(fā)環(huán)境 (IDE)。除了托管世界級(jí)的編譯器工具鏈 (GNC Compiler Collection),它還托管很多工具,如調(diào)試器、編輯器、版本控制系統(tǒng)、文件工具,以及 Shell 和解釋器,以幫助自動(dòng)完成開發(fā)任務(wù)。Linux 的這些功能使它成為理想的軟件開發(fā)和軟件研究環(huán)境。
Linux 多樣性
支持此處定義的各種使用模型只是 Linux 的一個(gè)附帶選項(xiàng)。Linux 發(fā)行版可滿足桌面和服務(wù)器市場(chǎng),而專門的發(fā)行版專注于嵌入式(例如 uClinux,如果您的嵌入式設(shè)備缺乏內(nèi)存管理單元)。任何人都可以取得 Linux 內(nèi)核并將用戶應(yīng)用程序打包,用于特定的使用模型,并利用 Linux 的各種優(yōu)勢(shì)(網(wǎng)絡(luò)協(xié)議和文件系統(tǒng)、可配置和動(dòng)態(tài)內(nèi)核和標(biāo)準(zhǔn)應(yīng)用程序編程接口)。這就是快速發(fā)展的智能手機(jī)平臺(tái)運(yùn)行 Linux 的原因(可定制 UI 實(shí)現(xiàn)個(gè)性化)。
更進(jìn)一步
如果將 Linux 比作橋,那么它將是一個(gè)現(xiàn)代工程奇跡。其分布式開發(fā)模型給現(xiàn)狀帶來(lái)挑戰(zhàn),其結(jié)果是產(chǎn)生了最靈活的軟件成品,擴(kuò)展了從微型嵌入式設(shè)備到大規(guī)模的超級(jí)計(jì)算機(jī)的使用模型。Linux 影響了整個(gè)產(chǎn)業(yè),并引領(lǐng)導(dǎo)了有關(guān)集群計(jì)算、文件系統(tǒng)、云和虛擬化方面的前沿研究。無(wú)論計(jì)算環(huán)境如何發(fā)展,Linux 總是緊密相隨。