回覆列表
  • 1 # DeepLearning

    如果真要細數起來,這是個很長的故事,Linux因為開放和強大,使得它進入了我們世界的方方面面,從你的汽車,智慧家居,安卓手機,無人機,雲端計算,Kubernetes, 大資料,人工智慧,各種MCU……不勝列舉。我們就挑Linux的核心來說一說五大技術創新,管中窺豹吧。

    Cgroups (2.6.24)

    早在2007年,Paul Menage和Rohit Seth便將深奧的控制組(cgroups)功能新增到了核心中(cgroups的當前實現是Tejun Heo重寫的)。這項新技術最初被用來確保特定任務的服務質量(QoS)。

    例如,您可以為與Web伺服器關聯的所有任務建立控制組定義(cgroup),為常規備份建立另一個cgroup,為常規作業系統需求建立另一個cgroup。 然後,您可以控制每個cgroup的資源百分比,以使OS和Web伺服器獲得大量系統資源,而備份程序可以訪問剩餘的資源。

    但是,cgroup最著名的是它作為當今驅動雲端計算技術的角色:容器。 實際上,cgroup最初被稱為程序容器。 當它們被LXC,CoreOS和Docker等專案採用時,這並不令人感到意外。

    閘門被開啟,“容器”一詞正好成為Linux的代名詞,而基於微服務風格的基於雲的“應用程式”的概念迅速成為規範。 如今,很難擺脫cgroup,它們是如此普遍。 每個大型基礎架構(如果執行Linux,也可能是膝上型電腦)都以有意義的方式利用了cgroup,從而使您的計算體驗比以往任何時候都更易於管理和更靈活。

    例如,您可能已經在計算機上安裝了Flathub或Flatpak,或者您可能開始在工作中使用Kubernetes和/或OpenShift。 無論如何,如果“容器”一詞對您仍然很模糊,那麼您可以從Linux容器的幕後實踐中獲得對容器的實際理解。

    LKMM (4.17)

    在2018年,通過Jade Alglave,Alan Stern,Andrea Parri,Luc Maranget,Paul McKenney和其他幾人的努力,Linux核心合併了Linux核心記憶體一致性模型(LKMM),用於描述Linux記憶體一致性模型並生成石蕊測試(特別是klitmus)。

    隨著系統在硬體設計中變得越來越複雜(添加了更多的CPU核心,快取記憶體和RAM等),讓他們更難知道哪個CPU以及何時需要哪個地址空間。 例如,如果CPU0需要將資料寫入記憶體中的共享變數,而CPU1需要讀取該值,則CPU0必須在CPU1嘗試讀取之前進行寫入。 同樣,如果將值以一種順序寫入記憶體,那麼無論使用哪個CPU或多個CPU進行讀取,都期望它們也以相同的順序讀取。

    即使在單個CPU上,記憶體管理也需要特定的任務順序。 x = y之類的簡單操作需要CPU從記憶體中載入y的值,然後將該值儲存在x中。 在CPU從記憶體中讀取值之前,無法將y中儲存的值放入x變數中。 還存在地址依賴性:x [n] = 6要求在CPU可以儲存值6之前載入n。

    LKMM可幫助識別和跟蹤程式碼中的這些記憶體模式。 它使用稱為“herd”的工具來協同完成此任務,該工具定義了記憶體模型(以邏輯公理的形式)施加的約束,然後枚舉了與這些約束一致的所有可能結果。

    低延遲補丁(2.6.38)

    很久以前,在2011年之前的日子裡,如果您想在Linux上進行“嚴格的”多媒體工作,則必須獲得一個低延遲核心。 這主要適用於音訊記錄,同時新增許多實時效果(例如,唱歌麥克風和新增混響,並在頭戴式耳機中聽到您的聲音而沒有明顯的延遲)。 有發行版(例如Ubuntu Studio)可靠地提供了這樣的核心,因此在實踐中並沒有什麼障礙,只是選擇發行版,創作者需要注意一些重要事項。

    但是,如果您不使用Ubuntu Studio,或者在分發之前需要更新核心,則必須轉到rt-patches網頁,下載核心補丁,然後將其應用於核心。 基於原始碼,手動進行編譯和安裝。

    然後,隨著核心版本2.6.38的釋出,此過程結束了。 預設情況下,Linux核心突然(似乎很神奇)內建了低延遲程式碼(根據基準,延遲至少降低了10倍)。 沒有更多的下載補丁,也沒有更多的編譯。 一切都正常,並且全部歸功於Mike Galbraith實施的200行小補丁。

    對於全世界的開源多媒體藝術家來說,這是一個改變遊戲規則的人。 從2011年開始情況如此之好,以至於在Raspberry Pi上構建數字音訊工作站(DAW),發現它的執行異常出色。

    RCU(2.5)

    RCU或Read-Copy-Update是電腦科學中定義的系統,它允許多個處理器執行緒從共享記憶體中讀取。 它通過推遲更新,但也將其標記為已更新來確保資料的使用者閱讀最新版本。 實際上,這意味著讀取與更新同時發生。

    典型的RCU週期如下所示:

    刪除指向資料的指標,以防止其他讀者引用它。等待讀者完成他們的關鍵過程。回收記憶體空間。

    將更新階段劃分為刪除和回收階段意味著更新程式將立即執行刪除,同時推遲迴收直到所有活動的讀取器完成(通過阻塞讀取器或註冊在完成時呼叫的回撥)。

    儘管不是為Linux核心發明了read-copy-update的概念,但在Linux中的實現是該技術的一個典型示例。

    協作(0.01)

    對於Linux核心進創新的地方,最終答案將始終是協作。 或稱其為良機,或稱其為技術優勢,或稱其為可定製性或僅稱其為開源,但是Linux核心及其牽頭的許多專案是協作與合作的光輝典範。

    它遠遠超出了核心。 可以說,由於Linux核心,各行各業都為開源做出了貢獻。 直到現在,Linux一直是自由軟體的主要力量,它鼓舞著使用者將其程式碼,藝術,構想或僅僅是他們自己帶入全球性,生產性和多樣化的人類社群。

    您最喜歡的Linux技術創新是什麼?

  • 2 # 三袋大菠蘿

    先不談偉大在哪。

    這種作業系統都是先有人做出來,然後再歸納總結為作業系統理論。理論和最新核心程式碼實現肯定還存在一些偏差的。

    西方搞技術就是這樣的,先有東西再歸納總結為理論知識。

    如果說偉大之處,我只能說,人家在沒商業利益以及前景不明朗的情況下就從無到有,動手開幹。

    可能最初版本很差,但人家就是一點點完善,最終變成一門計算機專業必修的理論課。

  • 3 # 哼哼個啥

    unix當初開發的初衷是為了解決IBM大型機的複雜,不穩定的問題。所以最初的unix就是小,只有2萬行c程式碼。後來增加了很多新技術,但也都是你有我有大家有的技術。

  • 中秋節和大豐收的關聯?
  • 國家為何要大力"發展"區塊鏈?