Try   HackMD

2025 年 Linux 核心設計課程期末展示

6 月 28 日,藉由 YouTube 直播進行

以下是「Linux 核心設計」課程的部分專題列表,詳見完整專題列表

  • Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
    上午場: 探究 Linux 核心的本質

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
10:00
12:00
直播錄影

  • CPU 排程器之理論基礎
    開發紀錄

    Linux 核心的 CPU 排程器已從 CFS 切換到 EEVDF,已不只是「挑選出下個任務」,背後涉及大量的理論,特別是涉及到排程的公平性、延遲需求,還有 CPU 頻寬控制的議題

  • 群組排程的考量因素和落實
    開發紀錄

    Linux v2.6.23 納入 CFS 後,隨即在 v2.6.24 引入 cgroups,並改變 CPU 排程器的考量,尤其雲端服務供應商著重的 Multi-tenant,更是其中群組排程的關鍵機制和應用場景

  • sched_ext 及機器學習
    開發紀錄

    繼 EEVDF 取代 CFS 後,sched_ext (scx) 出現於 Linux v6.12,允許開發者藉由 eBPF,在使用者空間動態載入或抽換 CPU 排程器,結合機器學習,依據推論動態調整排程行為

  • 作業系統底層機制
    開發紀錄

    在 CPU 排程器得以運作前,核心有大量工作要進行,且隨著硬體的更迭,要理解的難度大幅提高,我們嘗試反璞歸真,在 32 位元 RISC-V 處理器上從無到有自幹小型作業系統核心,從而理解 Linux 核心底層的實作機制

  • Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →
    下午場: 藉由 Linux 核心解決真實世界的問題

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
13:30
18:00
直播錄影

  • 輕量級容器實作
    開發紀錄

    藉由 Linux 核心提供的 namespaces, capabilities, seccomp 等機制,開發輕量級的 Linux 容器 (container)

  • 輕量級隔離運行環境
    開發紀錄

    容器直接運行於宿主核心,因此可呼叫完整宿主 Linux 系統呼叫集合,若容器被入侵,將會暴露出大量的宿主核心攻擊面 (Attack surface)。本專案藉由 User-mode linux (UML) 和系統呼叫攔截和二進位改寫機制,讓 UML 成為輕量級的隔離執行環境,在不依賴任何硬體虛擬化擴展和系統管理者權限的前提,得以高效運作

  • rootkit 評估及應用
    開發紀錄

    提出不依賴 kallsyms 與 kprobe 的 Linux 核心 rootkit 實作手法,達成對多種核心組態的潛伏與操控,無需仰賴符號表揭露,即可取得 ksymtab 與系統呼叫表的實體地址。本 rootkit 支援核心層級的行程隱藏、網路連線偽裝、權限提升、remote shell 建立,及核心模組的永續注入等功能,包含靜態 ELF 程式碼注入

  • 位元運算與數值系統的應用
    開發紀錄

    課程之所以強調學員須具備堅實的數學基礎,是因在各種應用場景中,數學往往扮演關鍵角色。以位元運算(bitwise operations, 簡稱 bitops)為例,其原理與多項式運算、平方根計算、指數函數等核心數學概念息息相關。本專題探討 bitops 如何結合這些數學基礎,並在 Linux 核心中實際發揮作用

  • 高度並行的 Valkey 實作
    開發紀錄

    Linux Foundation 於 2024 年 3 月 28 日推出 Valkey 專案,基於尚未改動授權的 Redis 7.2.4 分支,並持續以 BSD 三條款發布,獲得雲端運算大廠的支持。本專案藉由 Userspace RCU 和一系列並行機制,提升 Valkey/Redis 的效能表現

  • 運用核心的並行處理機制來下棋
    開發紀錄

    擴充課程的第三份作業,實作可在 Linux 核心模組中切換多種人工智慧演算法,並同步修訂核心通訊介面以支援多使用者環境。此外,作業亦探討 lock-free 設計方法,藉此充分展現多核處理器下的任務分配與執行動態

  • 異質多核通訊機制
    開發紀錄

    本專題在物美價廉的 Milk-V Duo 硬體上面,利用其異質多核的 RISC-V,運作 Linux 核心和 ThreadX,並利用 OpenAMP 規範的 RPMsg,建立異質多核間的通訊

  • 電源管理休眠/回復流程
    開發紀錄

    Linux 在行動裝置上的電源管理以系統 suspend (休眠) / Resume 為主要操作機制,核心依序執行 suspend_enter(同步檔案系統並暫停行程)、prepare(初始化省電模式), suspend, suspend_late(最後硬體關閉)與 suspend_noirq(關閉所有中斷);隨後藉由 resume_noirq, resume_early, resume, completeexit(脫離行程)逆向還原。這些階段涵蓋 DRAM 與 Flash 的電源域切換、CPU C-state、動態電壓與頻率調整(DVFS)以及裝置 D-state(如 D0–D3)的管理。這些過程涉及大量操作,且常因 I/O 排隊而延宕,本專題嘗試分析這些瓶頸,運用 Perfetto 等追蹤工具擷取系統行為的追蹤紀錄,再搭配 pm-graph 繪製電源域與行程凍結時序,觀察 I/O 活動、CPU C-state 切換與中斷響應,藉由更細緻的鎖分段或階段重疊機制,縮短整體 Suspend/Resume 時間

  • 雲端檔案系統
    開發紀錄

    藉由 Linux 核心提供的 FUSE,打造在使用者空間運作的檔案系統,並存取雲端儲存空間,允許使用者掛載 Linux 檔案系統並存取雲端服務