Linux 內核的五大創新

在科技行業,創新這個詞幾乎和革命同樣處處氾濫,因此很難將那些誇張的東西與真正使人振奮的東西區分開來。Linux內核被稱爲創新,但它又被稱爲現代計算中最大的奇蹟,一個微觀世界中的龐然大物。
撇開營銷和模式不談,Linux 能夠說是開源世界中最受歡迎的內核,它在近 30 年的生命時光當中引入了一些真正的規則改變者。

Linux 內核的五大創新Linux 內核的五大創新

Cgroups(2.6.24)linux

早在 2007 年,Paul Menage 和 Rohit Seth 就在內核中添加了深奧的控制組(cgroups)功能(cgroups 的當前實現是由 Tejun Heo 重寫的)。這種新技術最初被用做一種方法,從本質上來講,是爲了確保一組特定任務的服務質量。緩存

例如,你能夠爲與你的 WEB 服務相關聯的全部任務建立一個控制組定義(cgroup),爲例行備份建立另外一個 cgroup ,再爲通常操做系統需求建立另外一個 cgroup。而後,你能夠控制每一個組的資源百分比,這樣你的操做系統和 WEB 服務就能夠得到大部分系統資源,而你的備份進程能夠訪問剩餘的資源。微服務

Linux 內核的五大創新Linux 內核的五大創新

 

handsome hipster modern man designer working home using laptop at home工具

然而,cgroups 現在變得這麼著名是因其做爲驅動雲技術的角色:容器。事實上,cgroups 最初被命名爲進程容器。當它們被 LXC、CoreOS 和 Docker 等項目採用時,這並不奇怪。測試

就像閘門打開後同樣,「容器」 一詞就像成爲了 Linux 的同義詞同樣,微服務風格的基於雲的「應用」概念很快成爲了規範。現在,已經很難擺脫 cgroups 了,它們是如此廣泛。每個大規模的基礎設施(若是你運行 Linux 的話,可能還有你的筆記本電腦)都以一種合理的方式使用了 cgroups,這使得你的計算體驗比以往任什麼時候候都更加易於管理和靈活。操作系統

例如,你可能已經在電腦上安裝了 Flathub 或 Flatpak,或者你已經在工做中使用 Kubernetes和/或 OpenShift。無論怎樣,若是「容器」這個術語對你來講仍然模糊不清,則能夠 經過 Linux 容器從背後得到對容器的實際理解。線程

LKMM(4.17)設計

2018 年,Jade Alglave、Alan Stern、Andrea Parri、Luc Maranget、Paul McKenney 以及其餘幾我的的辛勤工做的成果被合併到主線 Linux 內核中,以提供正式的內存模型。Linux 內核內存[一致性]模型(LKMM)子系統是一套描述 Linux 內存一致性模型的工具,同時也產生用於測試的用例(特別命名爲 klitmus)。指針

隨着系統在物理設計上變得愈來愈複雜(增長了更多的中央處理器內核,高速緩存和內存增加,等等),它們就越難知道哪一個中央處理器須要哪一個地址空間,以及什麼時候須要。例如,若是 CPU0 須要將數據寫入內存中的共享變量,而且 CPU1 須要讀取該值,那麼 CPU0 必須在 CPU1 嘗試讀取以前寫入。相似地,若是值是以一種順序方式寫入內存的,那麼指望它們也以一樣的順序被讀取,而無論哪一個或哪些 CPU 正在讀取。blog

即便在單個處理器上,內存管理也須要特定的任務順序。像 x = y 這樣的簡單操做須要處理器從內存中加載 y 的值,而後將該值存儲在 x 中。在處理器從內存中讀取值以前,是不能將存儲在 y 中的值放入 x 變量的。此外還有地址依賴:x[n] = 6 要求在處理器可以存儲值 6 以前加載 n。

LKMM 能夠幫助識別和跟蹤代碼中的這些內存模式。它部分是經過一個名爲 herd 的工具來實現的,該工具(以邏輯公式的形式)定義了內存模型施加的約束,而後列舉了與這些約束一致性的全部可能的結果。

低延遲補丁(2.6.38)

好久之前,在 2011 年以前,若是你想在 Linux 上進行多媒體工做,你必須得有一個低延遲內核。這主要適用於錄音時添加了許多實時效果(如對着麥克風唱歌和添加混音,以及在耳機中無延遲地聽到你的聲音)。有些發行版,如 Ubuntu Studio,可靠地提供了這樣一個內核,因此實際上這沒有什麼障礙,這只不過是當藝術家選擇發行版時的一個重要提醒。

然而,若是你沒有使用 Ubuntu Studio,或者你須要在你的發行版提供以前更新你的內核,你必須跳轉到 rt-patches 網頁,下載內核補丁,將它們應用到你的內核源代碼,編譯,而後手動安裝。

後來,隨着內核版本 2.6.38 的發佈,這個過程結束了。Linux 內核忽然像變魔術同樣默認內置了低延遲代碼(根據基準測試,延遲至少下降了 10 倍)。再也不須要下載補丁,不用編譯。一切都很順利,這都是由於 Mike Galbraith 編寫了一個 200 行的小補丁。

對於全世界的開源多媒體藝術家來講,這是一個規則改變者。從 2011 年開始事情變得如此美好,到 2016 年我本身作了一個挑戰,在樹莓派 v1(型號 B)上建造一個數字音頻工做站(DAW),結果發現它運行得出奇地好。

RCU(2.5)

RCU,即讀-拷貝-更新Read-Copy-Update,是計算機科學中定義的一個系統,它容許多個處理器線程從共享內存中讀取數據。它經過延遲更新但也將它們標記爲已更新來作到這一點,以確保數據讀取爲最新內容。實際上,這意味着讀取與更新同時發生。

典型的 RCU 循環有點像這樣:

1.刪除指向數據的指針,以防止其餘讀操做引用它。

2. 等待讀操做完成它們的關鍵處理。

3. 回收內存空間。

將更新階段劃分爲刪除和回收階段意味着更新程序會當即執行刪除,同時推遲迴收直到全部活動讀取完成(經過阻止它們或註冊一個回調以便在完成時調用)。

雖然 RCU 的概念不是爲 Linux 內核發明的,但它在 Linux 中的實現是該技術的一個定義性的例子。

合做(0.01)

對於 Linux 內核創新的問題的最終答案永遠是協做。你能夠說這是一個好時機,也能夠稱之爲技術優點,稱之爲黑客能力,或者僅僅稱之爲開源,但 Linux 內核及其支持的許多項目是協做與合做的光輝範例。

它遠遠超出了內核範疇。各行各業的人都對開源作出了貢獻,能夠說都是由於 Linux 內核。Linux 曾經是,如今仍然是自由軟件的主要力量,激勵人們把他們的代碼、藝術、想法或者僅僅是他們本身帶到一個全球化的、有生產力的、多樣化的人類社區中。

相關文章
相關標籤/搜索