91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux內(nèi)核三大核心模塊深度解析:調(diào)度、內(nèi)存與I/O

中際賽威劉老師 ? 來源:中際賽威劉老師 ? 作者:中際賽威劉老師 ? 2026-03-12 09:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux內(nèi)核作為操作系統(tǒng)的核心,其進程調(diào)度、內(nèi)存管理和文件I/O三大模塊共同決定了系統(tǒng)的性能與穩(wěn)定性。無論是多核服務(wù)器的高并發(fā)處理,還是嵌入式設(shè)備的資源受限場景,深入理解這些底層機制都是進行性能調(diào)優(yōu)與系統(tǒng)開發(fā)的基石。

一、進程調(diào)度:從CFS到EEVDF的演進

進程調(diào)度負(fù)責(zé)決定哪個任務(wù)獲得CPU執(zhí)行權(quán)。在Linux中,進程是資源的容器,而線程才是實際的調(diào)度單元,兩者均通過kernel_clone系統(tǒng)調(diào)用創(chuàng)建。寫時拷貝技術(shù)使得fork操作幾乎不消耗額外內(nèi)存,子進程與父進程共享物理頁,僅在寫入時復(fù)制,大幅提升創(chuàng)建效率。類似地,文件描述符表、文件系統(tǒng)上下文和信號處理也采用廣義的寫時拷貝機制。

調(diào)度器通過多個調(diào)度類管理不同優(yōu)先級的任務(wù):截止期限調(diào)度類(DL)滿足硬實時要求,實時調(diào)度類(RT)提供確定性響應(yīng),公平調(diào)度類(CFS/EEVDF)處理普通進程,而可編程EXT調(diào)度類允許通過eBPF定制策略。每個CPU維護獨立的運行隊列(runqueue),調(diào)度器遍歷各調(diào)度類選擇最合適的任務(wù)。

多核系統(tǒng)中,負(fù)載均衡至關(guān)重要。wake_affine機制嘗試將喚醒任務(wù)放回原CPU以利用緩存,定期負(fù)載均衡則遷移任務(wù)以平衡負(fù)載。在NUMA架構(gòu)下,調(diào)度器優(yōu)先考慮本地內(nèi)存訪問,超線程(SMT)場景則需平衡物理核心上的邏輯線程。實時Linux內(nèi)核(PREEMPT_RT)通過減少不可搶占區(qū)間,將最壞延遲降至微秒級。perf sched、trace-cmd等工具可深入分析調(diào)度行為。

二、內(nèi)存管理:從硬件分頁到智能回收

內(nèi)存管理子系統(tǒng)負(fù)責(zé)虛擬地址到物理地址的映射、分配與回收。硬件分頁機制通過頁表控制訪問權(quán)限,內(nèi)核將物理內(nèi)存劃分為DMA、NORMAL等區(qū)域(zone),每個區(qū)域由buddy系統(tǒng)以2的冪次管理連續(xù)物理頁。struct page及其封裝struct folio簡化了復(fù)合頁的處理。

針對不同需求,內(nèi)核提供多種分配器:連續(xù)內(nèi)存分配器(CMA)為DMA等設(shè)備預(yù)留連續(xù)內(nèi)存;slab分配器緩存頻繁分配的小對象;kmalloc用于小于一頁的分配,vmalloc分配虛擬連續(xù)但物理不連續(xù)的大內(nèi)存。用戶進程通過malloc/mmap申請內(nèi)存,內(nèi)核以虛擬內(nèi)存區(qū)域(VMA)管理地址空間,首次訪問觸發(fā)缺頁異常分配物理頁。

頁緩存(page cache)加速文件I/O,匿名頁(如堆、棧)在內(nèi)存緊張時可通過交換分區(qū)(swap)換出。內(nèi)核維護活躍/非活躍LRU鏈表,最近訪問的頁位于活躍鏈表,不常訪問的逐漸移至非活躍鏈表并被回收。多代LRU(MGLRU)進一步優(yōu)化回收效率,減少掃描開銷。透明大頁(THP)和HugeTLB減少TLB缺失,提升性能。內(nèi)存cgroup限制進程組內(nèi)存使用量,OOM killer在耗盡時選擇合適進程終止。

wKgZPGmyEDyAB26oAADe_Iw5_O444.jpeg

三、文件I/O:從阻塞模型到高性能異步

文件I/O子系統(tǒng)連接存儲與應(yīng)用程序,其性能直接影響系統(tǒng)吞吐。傳統(tǒng)阻塞I/O簡單但低效,非阻塞I/O配合多路復(fù)用(select/poll/epoll)成為高并發(fā)基石。信號驅(qū)動I/O(SIGIO)和異步I/O(AIO)進一步解耦,io_uring通過共享環(huán)形緩沖區(qū)將性能推向極致。C10K問題曾推動事件驅(qū)動模型發(fā)展,如今已邁向C10M級別。

文件系統(tǒng)在內(nèi)存中以超級塊(superblock)、索引節(jié)點(inode)和目錄項(dentry)表示。硬鏈接共享同一inode,符號鏈接則存儲目標(biāo)路徑。日志(journaling)保證崩潰后文件系統(tǒng)一致性。頁緩存通過address_space關(guān)聯(lián)文件與頁,iomap替代傳統(tǒng)buffer_head,與大型頁(large folios)無縫協(xié)作。文件讀寫流程經(jīng)過VFS層調(diào)用具體文件系統(tǒng)操作,最終通過塊層訪問設(shè)備。

I/O調(diào)度器(如mq-deadline、bfq)合并請求以優(yōu)化機械硬盤尋道或SSD并發(fā)。I/O cgroup(blkio)限制進程組帶寬。iostat、blktrace、bcc/eBPF等工具可深入追蹤I/O延遲。

結(jié)語

調(diào)度、內(nèi)存和I/O三者環(huán)環(huán)相扣:調(diào)度決策影響內(nèi)存訪問局部性,內(nèi)存回收可能觸發(fā)I/O,I/O完成喚醒等待進程。唯有從原理層面理解這些機制及其相互作用,才能在復(fù)雜場景下做出精準(zhǔn)優(yōu)化。工程師高培針對宋寶華老師課綱分析認(rèn)為,只有學(xué)透Linux內(nèi)核三大核心模塊,才能真正掌握系統(tǒng)級開發(fā)與調(diào)優(yōu)能力。無論是開發(fā)高性能應(yīng)用還是診斷系統(tǒng)瓶頸,這三大模塊都是技術(shù)人員的必修課。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11770

    瀏覽量

    219110
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    9

    文章

    3213

    瀏覽量

    76391
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Linux內(nèi)核驅(qū)動開發(fā)的技術(shù)核心精要

    嵌入式Linux驅(qū)動開發(fā)是連接硬件與操作系統(tǒng)的關(guān)鍵環(huán)節(jié)。隨著內(nèi)核演進(如Linux 6.13)和硬件復(fù)雜度提升,開發(fā)者需掌握并發(fā)控制、中斷分層、內(nèi)存管理、設(shè)備樹、調(diào)試工具等
    發(fā)表于 03-10 13:56

    Linux內(nèi)核伙伴系統(tǒng)內(nèi)存申請函數(shù)詳解:從原理到實戰(zhàn)

    Linux 內(nèi)核中,內(nèi)存管理是整個系統(tǒng)穩(wěn)定運行的基石,而伙伴系統(tǒng)(Buddy System) 作為內(nèi)核物理內(nèi)存分配的
    的頭像 發(fā)表于 02-10 16:58 ?3640次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>伙伴系統(tǒng)<b class='flag-5'>內(nèi)存</b>申請函數(shù)詳解:從原理到實戰(zhàn)

    MAX6947:10端口恒流LED驅(qū)動與I/O擴展器的深度解析

    MAX6946/MAX6947:10端口恒流LED驅(qū)動與I/O擴展器的深度解析 在電子設(shè)計領(lǐng)域,LED驅(qū)動和I/
    的頭像 發(fā)表于 02-02 15:50 ?174次閱讀

    【「Linux 設(shè)備驅(qū)動開發(fā)(第 2 版)」閱讀體驗】+讀深入理解Linux內(nèi)核內(nèi)存分配

    每個內(nèi)存地址是虛擬的,不是直接指向RAM中的任何地址。當(dāng)用戶訪問內(nèi)存中的存儲單元時,都會進行地址轉(zhuǎn)換以匹配相應(yīng)的物理內(nèi)存。書籍的第10章討論了五個主題,對Linux
    發(fā)表于 01-16 20:05

    PCF8574A:I2C總線8位遠(yuǎn)程I/O擴展器的深度解析

    PCF8574A:I2C總線8位遠(yuǎn)程I/O擴展器的深度解析 在電子工程師的日常設(shè)計中,I/
    的頭像 發(fā)表于 12-30 17:00 ?564次閱讀

    PCA9539:16位I2C與SMBus低功耗I/O擴展器深度解析

    PCA9539:16位I2C與SMBus低功耗I/O擴展器深度解析 作為一名電子工程師,在設(shè)計項目中我們經(jīng)常會遇到需要擴展
    的頭像 發(fā)表于 12-29 09:55 ?320次閱讀

    PCA9554:8位I2C和SMBus I/O擴展器的深度解析

    PCA9554:8位I2C和SMBus I/O擴展器的深度解析 在電子設(shè)計領(lǐng)域,I/
    的頭像 發(fā)表于 12-27 13:45 ?791次閱讀

    PCA9554A:遠(yuǎn)程 8 位 $I^{2}C$ 和 SMBus I/O 擴展器的深度解析

    PCA9554A:遠(yuǎn)程 8 位 $I^{2}C$ 和 SMBus I/O 擴展器的深度解析 在電子工程師的日常設(shè)計工作中,
    的頭像 發(fā)表于 12-27 11:00 ?940次閱讀

    PCA9534:8位I2C和SMBus低功耗I/O擴展器的深度解析

    PCA9534:8位I2C和SMBus低功耗I/O擴展器的深度解析 在當(dāng)今的電子設(shè)計領(lǐng)域,I/
    的頭像 發(fā)表于 12-27 10:55 ?861次閱讀

    TCA6408A:低電壓8位I2C和SMBus I/O擴展器的深度解析

    TCA6408A:低電壓8位I2C和SMBus I/O擴展器的深度解析 在電子設(shè)計領(lǐng)域,I/
    的頭像 發(fā)表于 12-25 10:25 ?612次閱讀

    TCA6424A:低電壓24位I2C和SMBus I/O擴展器的深度解析

    TCA6424A:低電壓24位I2C和SMBus I/O擴展器的深度解析 在電子設(shè)計領(lǐng)域,I/
    的頭像 發(fā)表于 12-24 15:30 ?353次閱讀

    深入Linux內(nèi)核:進程調(diào)度核心邏輯與實現(xiàn)細(xì)節(jié)

    ,背后都離不開內(nèi)核調(diào)度算法的精準(zhǔn)操控。今天,我們就從優(yōu)先級、調(diào)度算法、時間片分配到底層實現(xiàn),全方位拆解Linux內(nèi)核進程
    的頭像 發(fā)表于 12-24 07:05 ?4331次閱讀
    深入<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>:進程<b class='flag-5'>調(diào)度</b>的<b class='flag-5'>核心</b>邏輯與實現(xiàn)細(xì)節(jié)

    Linux內(nèi)核模塊的加載機制

    。Linux內(nèi)核模塊的加載過程主要包含了ELF解析、動態(tài)鏈接、安全驗證和資源管理技術(shù)。其核心步驟包括:權(quán)限檢查→ELF解析→符號重定位→依賴
    發(fā)表于 11-25 06:59

    淺談光學(xué)I/O模塊的熱挑戰(zhàn)

    服務(wù)器和機架式網(wǎng)絡(luò)基礎(chǔ)設(shè)施系統(tǒng)內(nèi)的光學(xué) I/O 模塊通常接受主動冷卻系統(tǒng)的直接冷卻,特別是來自機架式設(shè)備前面板的強制風(fēng)冷。機架式設(shè)備的散熱設(shè)計需要平衡 I/
    的頭像 發(fā)表于 11-03 09:32 ?785次閱讀
    淺談光學(xué)<b class='flag-5'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>模塊</b>的熱挑戰(zhàn)

    Nginx核心功能深度解析

    Nginx核心功能深度解析
    的頭像 發(fā)表于 05-09 10:50 ?893次閱讀