Linux 內核的五大創新

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

Cgroups(2.6.24)
早在 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 正在讀取。

即使在單個處理器上,內存管理也需要特定的任務順序。像 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.刪除指向數據的指針,以防止其他讀操作引用它。

  1. 等待讀操作完成它們的關鍵處理。

  2. 回收內存空間。

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

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

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

它遠遠超出了內核範疇。各行各業的人都對開源做出了貢獻,可以說都是因爲 Linux 內核。Linux 曾經是,現在仍然是自由軟件的主要力量,激勵人們把他們的代碼、藝術、想法或者僅僅是他們自己帶到一個全球化的、有生產力的、多樣化的人類社區中。
更多linux資訊可查看:https://www.linuxprobe.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章