【Linux內核及內核編程】Linux2.6 后的內核特點

2003 年發布的 Linux 2.6 內核是一個里程碑,它標志著 Linux 從 “極客玩具” 向全場景操作系統的蛻變。如果說 2.4 內核是 Linux 進入企業級市場的起點,那么 2.6 及后續版本則是一場從內到外的 “現代化革命”,不僅讓 Linux 在服務器、桌面、嵌入式領域全面開花,更奠定了移動互聯網和云計算時代的技術基石。


目錄

一、調度器:從 “效率至上” 到 “公平優先”

1.1 完全公平調度器(CFS,2.6.23 引入)

1.2 內核搶占:讓內核 “靈活剎車”

二、線程模型:從 “輕量級進程” 到 “真正的線程”

三、虛擬內存:管理更大、更復雜的內存空間

3.1 透明大頁(Huge Pages,2.6.32 引入)

3.2 內存壓縮(ZRAM,3.14 引入)

3.3 NUMA 支持增強

四、文件系統:從 “能用” 到 “好用又耐用”

4.1 ext4:ext3 的全面升級(2.6.28 集成)

4.2 Btrfs:面向未來的 “萬能文件系統”(2.6.29 引入實驗性支持)

4.3 設備文件系統(sysfs)與熱插拔

五、音頻與多媒體:從 “能響” 到 “高保真”

5.1 ALSA 取代 OSS 成為主流(2.6 早期版本)

5.2 內核模式設置(KMS,2.6.20 引入)

六、電源管理:讓設備 “更省電、更智能”

6.1 ACPI 全面支持與動態調頻(cpufreq,2.6.10 引入)

6.2 能源感知調度(2.6.35 引入)

七、網絡:從 “連得上” 到 “快又穩”

7.1 IPSec 集成與 IPv6 支持(2.6.15 全面支持 IPv6)

7.2 網絡命名空間(Network Namespace,2.6.29 引入)

7.3 流量控制與 QoS

八、ARM 架構的蛻變:從 “嵌入式小角色” 到 “移動芯片霸主”

8.1 設備樹(Device Tree,3.1 引入)

8.2 big.LITTLE 架構支持(3.10 引入)

8.3 實時性優化

九、用戶界面層:為桌面和移動設備鋪路


一、調度器:從 “效率至上” 到 “公平優先”

1.1 完全公平調度器(CFS,2.6.23 引入)

老版本的 O (1) 調度器雖然速度快,但對交互式任務(比如鼠標點擊、鍵盤輸入)不夠友好 —— 后臺程序可能搶占前臺任務的 CPU 時間,導致用戶感覺卡頓。CFS 就像一個 “時間蛋糕分配器”,它把 CPU 時間切成小塊,用紅黑樹記錄每個進程的 “虛擬運行時間”,確保每個進程都能按優先級獲得近似相等的時間片。

  • 公平性:比如你一邊看視頻一邊下載文件,CFS 會讓視頻解碼進程優先獲得 CPU,避免畫面卡頓。
  • 實時性:支持實時進程優先級搶占,工業控制等場景的實時任務響應更快。

1.2 內核搶占:讓內核 “靈活剎車”

2.6 之前的內核只有在用戶態才能搶占,內核態代碼一旦運行就必須完成,這在實時場景中很危險(比如打印機卡紙時內核可能無法及時響應)。2.6 實現了完全內核搶占

  • 即使在內核處理復雜操作(如文件系統讀寫)時,也能被高優先級任務打斷,就像開車時隨時能踩剎車。
  • 配合 RCU(讀 - 復制更新)機制,確保搶占時數據一致性,避免 “剎車失靈”。

二、線程模型:從 “輕量級進程” 到 “真正的線程”

早期 Linux 把線程當作 “共享資源的進程”,調度和資源管理不夠精細。2.6 之后整合了NPTL(原生 POSIX 線程庫),實現了符合 POSIX 標準的線程模型:

  • 線程組:多個線程屬于同一個進程組,共享地址空間但有獨立的調度上下文,比如瀏覽器的多個標簽頁線程。
  • 調度策略擴展:支持 FIFO、輪詢等實時調度策略,滿足多媒體處理、工業控制等場景的需求。
  • 線程局部存儲(TLS):每個線程可以有獨立的私有數據,比如 Web 服務器為每個連接線程保存用戶會話信息。

三、虛擬內存:管理更大、更復雜的內存空間

3.1 透明大頁(Huge Pages,2.6.32 引入)

傳統 4KB 小頁面對大內存程序(如數據庫、虛擬機)效率低,頻繁的頁表查詢會拖慢速度。透明大頁自動將多個小頁面合并為 2MB/1GB 的大頁面:

  • 減少頁表數量,CPU 緩存能存下更多頁表信息,就像把書架上的書按類別打包,找書更快。
  • 虛擬機場景中,大頁面讓內存訪問速度提升 30% 以上。

3.2 內存壓縮(ZRAM,3.14 引入)

手機、平板等嵌入式設備內存有限,當物理內存不足時,傳統 swap 會把數據寫到速度慢的閃存上。ZRAM 直接在內存中壓縮不常用數據,速度比 swap 快 10 倍以上:

  • 比如手機同時開 10 個 APP 時,后臺 APP 的數據會被壓縮存儲,前臺 APP 依然流暢。
  • 配合 Low Memory Killer 機制,優先殺死 “吃內存” 的進程,保證系統穩定。

3.3 NUMA 支持增強

多核 CPU 時代,不同核心訪問本地內存和遠程內存的速度差異很大(就像你在自己工位拿文件和去隔壁工位拿文件的區別)。2.6 之后的內核能感知 CPU 和內存的拓撲結構,優先讓進程訪問本地內存:

  • 服務器場景中,數據庫集群的跨核心數據訪問延遲降低 50%。

四、文件系統:從 “能用” 到 “好用又耐用”

4.1 ext4:ext3 的全面升級(2.6.28 集成)

  • 更大的文件和分區:支持單個文件 16TB,分區 1EB(1024PB),再也不用擔心存不下 4K 電影或大型數據集。
  • 延遲分配:寫入數據時先記錄元數據,等真正寫入時再分配物理塊,減少磁盤碎片,就像打包快遞時先規劃好箱子空間再放物品。
  • 日志優化:更快的日志提交速度,文件系統崩潰后的恢復時間從小時級縮短到分鐘級。

4.2 Btrfs:面向未來的 “萬能文件系統”(2.6.29 引入實驗性支持)

  • 快照和回滾:可以給系統拍 “照片”,誤刪文件或系統崩潰時一鍵恢復,比 Windows 的系統還原更靈活。
  • 校驗和機制:自動檢測數據錯誤并修復,適合存儲重要數據(如科研數據、醫療影像)。
  • 寫時復制(COW):修改文件時不直接覆蓋原數據,而是生成新數據塊,避免斷電等意外導致的文件損壞。

4.3 設備文件系統(sysfs)與熱插拔

2.6 統一了設備管理模型,通過/sys目錄可以看到所有設備的詳細信息(比如 USB 鼠標的廠商 ID、硬盤的分區表)。配合udev工具,實現了真正的即插即用:

  • 插入 U 盤時,內核自動識別并加載驅動,用戶無需手動安裝驅動程序。
  • 驅動模型分層為 “總線 - 設備 - 驅動” 三層,就像圖書館按 “書架 - 書籍 - 分類標簽” 管理,開發新設備驅動更簡單。

五、音頻與多媒體:從 “能響” 到 “高保真”

5.1 ALSA 取代 OSS 成為主流(2.6 早期版本)

老的 OSS(開放聲音系統)是收費的,且對多聲卡、復雜音頻設備支持差。ALSA(高級 Linux 聲音架構)免費開源,支持:

  • 多通道音頻(5.1、7.1 聲道),在家看電影有影院級體驗。
  • 軟件合成器(如 FluidSynth),音樂制作愛好者可以用 Linux 編曲。
  • 低延遲模式,直播、游戲語音聊天時幾乎沒有延遲。

5.2 內核模式設置(KMS,2.6.20 引入)

以前的顯卡驅動需要在用戶態處理分辨率切換、刷新率調整,容易導致黑屏或卡頓。KMS 把這些操作放到內核態,配合 DRM(直接渲染管理器)實現:

  • 開機啟動時就能顯示正確的分辨率,不再有 “啟動時屏幕閃爍” 的問題。
  • 硬件加速支持更好,4K 視頻播放占用 CPU 資源降低 50%,手機看視頻更省電。

六、電源管理:讓設備 “更省電、更智能”

6.1 ACPI 全面支持與動態調頻(cpufreq,2.6.10 引入)

  • ACPI(高級配置和電源接口):取代老舊的 APM,支持睡眠(S3)、休眠(S4)等更多電源狀態,筆記本電腦合蓋后能快速喚醒。
  • CPU 動態頻率調節:看網頁時 CPU 降頻省電,玩游戲時自動超頻,就像汽車在城市道路省油模式和高速動力模式切換。
  • 設備電源管理:USB 設備不使用時自動進入低功耗狀態,無線鼠標幾個月才換一次電池。

6.2 能源感知調度(2.6.35 引入)

內核會根據系統負載和電池電量自動調整策略:

  • 電池模式下,優先使用低功耗核心(如 ARM 的 Cortex-A53),延長續航時間。
  • 插電模式下,啟用高性能核心(如 Cortex-A73),發揮設備最大性能。

七、網絡:從 “連得上” 到 “快又穩”

7.1 IPSec 集成與 IPv6 支持(2.6.15 全面支持 IPv6)

  • IPSec:在內核層實現加密通信,企業 VPN 連接更安全,數據在互聯網傳輸時就像加了一層密碼鎖。
  • IPv6:解決 IPv4 地址耗盡問題,每個設備都能有獨立 IP,為物聯網(如智能家電、穿戴設備)鋪路。

7.2 網絡命名空間(Network Namespace,2.6.29 引入)

這是容器技術(如 Docker)的核心基礎之一,每個命名空間就像一個獨立的 “網絡小世界”:

  • 不同容器可以有自己的 IP 地址、端口號,比如兩個 Web 服務都用 80 端口卻互不沖突。
  • 隔離性增強,一個容器的網絡配置錯誤不會影響其他容器。

7.3 流量控制與 QoS

通過tc命令可以精細控制網絡流量,比如:

  • 限制下載速度,避免占用全部帶寬導致網頁打不開。
  • 優先轉發視頻會議數據,保證語音視頻不卡頓。

八、ARM 架構的蛻變:從 “嵌入式小角色” 到 “移動芯片霸主”

8.1 設備樹(Device Tree,3.1 引入)

以前 ARM 設備的硬件信息(如引腳配置、外設地址)硬編碼在內核中,換個芯片型號就得改內核代碼。設備樹用 DTS 文件描述硬件,就像給內核一份 “硬件說明書”:

  • 開發新板子時只需修改 DTS 文件,無需改動內核代碼,大大加快嵌入式設備開發速度。
  • 支持 64 位 ARM(ARMv8),為手機、平板的 64 位處理器鋪路。

8.2 big.LITTLE 架構支持(3.10 引入)

ARM 的大小核設計(如 4 個 Cortex-A53 小核 + 4 個 Cortex-A73 大核)需要內核智能調度:

  • 看小說、刷微博時用小核,省電;玩游戲時用大核,性能拉滿。
  • 支持 CPU 集群調度,多個核心可以組成集群協同工作,提升并行處理能力。

8.3 實時性優化

針對嵌入式實時場景(如工業控制、汽車電子),ARM 內核引入:

  • 搶占式調度增強,中斷響應時間從毫秒級縮短到微秒級。
  • 內存屏障優化,確保關鍵數據操作的原子性。

九、用戶界面層:為桌面和移動設備鋪路

雖然內核不直接處理圖形界面,但 2.6 之后的這些改進讓桌面體驗大幅提升:

  • 輸入子系統:統一管理鍵盤、鼠標、觸摸屏等輸入設備,支持多點觸控(如手機滑動操作)。
  • 幀緩沖(Frame Buffer):直接操作顯卡顯存,配合 Xorg/Wayland 實現高分辨率圖形輸出。
  • 電源按鍵管理:長按電源鍵彈出關機菜單,短按鎖屏,操作更符合用戶習慣。

?2.6 之后內核進化史:?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913039.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913039.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913039.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GO 語言學習 之 結構體

在 Go 語言中,結構體(struct)是一種用戶自定義的數據類型,它可以包含多種不同類型的數據組合在一起。結構體為組織和管理相關數據提供了一種有效的方式,常用于表示現實世界中的對象或概念。如果你懂C/C,那么…

ubuntu 啟動SSH 服務

在Ubuntu系統中,啟動SSH服務需要確保SSH服務已經安裝,并且正確配置。以下是詳細步驟: 一、檢查SSH服務是否已安裝 檢查SSH服務是否安裝 打開終端(Terminal)。 輸入以下命令來檢查SSH服務是否已安裝: bash…

【3.4 漫畫分布式共識算法】

3.4 漫畫分布式共識算法 ?? 人物介紹 小明:對分布式共識算法好奇的開發者架構師老王:分布式系統專家,精通各種共識算法?? 共識算法概述 小明:“老王,分布式系統中為什么需要共識算法?” 架構師老王:“想象一下,你有多個服務器需要就某個決定達成一致,比如選出一…

程序計數器(PC)是什么?

程序計數器(PC)是什么? 程序計數器(PC)詳解 程序計數器(Program Counter, PC) 是CPU中的一個關鍵寄存器,用于存儲下一條待執行指令的內存地址。它控制程序的執行流程,是…

影樓精修-智能修圖Agent

今天給大家介紹一篇令人驚喜的論文《JarvisArt: Liberating Human Artistic Creativity via an Intelligent Photo Retouching Agent》 論文地址:https://arxiv.org/pdf/2506.17612 Code(暫無代碼):https://github.com/LYL1015/…

帕金森與健康人相關數據和處理方法(一些文獻的記錄)

主要的帕金森腦電數據進行一些分類分析的文章。 帕金森病 2004 年至 2023 年腦電圖研究的文獻計量分析對于研究的分析以及關鍵研究和趨勢從腦電圖信號中檢測帕金森病,采用離散小波變換、不同熵度量和機器學習技術使用機器學習和深度學習方法分析不同模態的數據以診…

優象光流模塊,基于python的數據讀取demo

優象光流模塊,型號UP-FLOW-LC-302-3C,準備將其應用于設備的運行速度測量,物美價廉。 廠家提供的數據格式表: 實測用python的serial包readline()函數讀取到的幀數據: 與官方的給定略有出入,不過主要字節的順…

模型部署與推理--利用libtorch模型部署與推理

文章目錄 1從pytorch導出pt文件2下載并配置libtorch3推理4結果:時間對比:推理結果: 參考 以deeplabv3plus為例講解怎么利用libtorch部署在c上模型。關于libtorch和pt文件請參考我之前的博客。 1從pytorch導出pt文件 if __name__ __main__: …

芯得EP.21丨基于極海APM32F4的TencentOS Tiny實時操作系統移植詳解

《APM32芯得》系列內容為用戶使用APM32系列產品的經驗總結,均轉載自21ic論壇極海半導體專區,全文未作任何修改,未經原文作者授權禁止轉載。 如遇技術問題,可前往 極海半導體開發者論壇 1 前言 最近在了解TencentOS的特性&#xf…

【Docker基礎】Docker數據持久化與卷(Volume)介紹

目錄 1 Docker數據持久化概述 1.1 為什么需要數據持久化 1.2 Docker數據管理方式對比 2 Docker卷(Volume)核心概念 2.1 數據卷基本特性 2.2 卷類型詳解 2.2.1 命名卷(Named Volumes) 2.2.2 匿名卷(Anonymous Volumes) 2.2.3 主機綁定卷(Host Volumes) 3 數據卷操作全…

yolo8,10,11之處理不平衡類別問題

一、前言 使用 yolo11進行目標檢測時,發現訓練數據集存在類別數量不平衡的情況,查閱了一下資料,可采取以下方法。 二、樣本增強 少數類的框是獨立存在于圖片中,則可通過顏色、亮度、幾何變換等方法人為增加少數類的樣本數&#x…

基于 51 單片機做的二十四點小游戲

用 51 單片機做的二十四點小游戲 一、任務要求 設計一個模擬紙牌 24 點玩法的單片機模擬器,由單片機隨機發出四個牌點,測試者在實驗板按鍵上輸入計算過程,單片機判斷計算結果是否正確,并評定測試者的成績。 【基本要求】&#…

Hadoop WordCount 程序實現與執行指南

Hadoop WordCount 程序實現與執行指南 下面是使用Python實現的Hadoop WordCount程序,包含完整的Mapper和Reducer部分。 這個程序可以在PyCharm中本地測試,也可以部署到遠程Hadoop集群上運行。 mapper.py import sys# 從標準輸入讀取數據 for line in sys.stdin:# 移除行首…

數據可視化:5 分鐘讀懂其核心價值與技術實踐

為什么數據可視化成為企業數字化轉型的“必修課”?在信息爆炸的時代,企業每天產生海量數據,從客戶行為到銷售業績,從供應鏈運作到市場趨勢。如何從這些原始數據中快速提煉有價值的信息?如何將復雜數據轉化為直觀易懂的…

Python 量化交易安裝使用教程

一、什么是量化交易? 量化交易是通過數學模型和計算機程序,自動化地執行證券買賣決策的交易方式。Python 憑借其豐富的生態和強大的數據處理能力,成為量化交易的首選語言。 二、環境準備 建議使用 Anaconda 安裝 Python 3.8,方便…

從 PostgreSQL 到 DolphinDB:數據實時同步一站式解決方案

隨著越來越多的用戶使用 DolphinDB,各種不同的應用的場景也對 DolphinDB 的數據接入提出了不同的要求。部分用戶需要將 PostgreSQL 的數據實時同步到 DolphinDB 中來,以滿足在 DolphinDB 中使用數據的實時性需求。本篇教程將介紹使用 Debezium 來實時捕獲…

關于聯詠(Novatek )白平衡色溫坐標系探究

目錄 一、疑問 二、結論 三、分析 四、釋疑 五、仿真模擬 一、疑問 為什么Novatek的白平衡色溫坐標系是這個樣子的呢?各條直線和曲線分別代表什么含義呢?色溫坐標系中所標定的參數代表什么含義呢?如何標定新增一些特殊的光源呢?二、結論

Protein FID:AI蛋白質結構生成模型評估新指標

一、引言:蛋白質生成模型面臨的評估挑戰 近年來,AI驅動的蛋白質結構生成模型取得了令人矚目的進展,但如何有效評估這些模型的質量卻一直是一個懸而未決的問題。雖然實驗驗證仍然是金標準,但計算機模擬評估對于快速開發和比較機器…

Vim 高效編輯指南:從基礎操作到塊編輯的進階之路

文章目錄?? 一、基礎編輯命令(生存必備)? 二、進階操作:可視化塊模式 (Ctrl+v)典型應用場景?? 三、效率提升技巧?? 四、配置建議(~/.vimrc)結語作為開發者最強大的文本編輯器之一,Vim 的高效操作離不開其命令模式(Normal Mode)。本文將系統性地介紹 Vim 的核心編…

docker學習第一天框架學習以及在redhat7.9安裝操作

一.docker是什么。 Docker 是一個開源的容器化平臺,通過將應用程序及其依賴項(如代碼、運行時環境、系統工具等)打包到輕量級、可移植的容器中,實現「一次構建,處處運行」的現代化開發模式。它利用了 Linux 內核特性來…