sysprog
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Help
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    11
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    --- title: 2025 年 Linux 核心設計課程期末展示 description: 「Linux 核心設計」課程期末展示 tags: linux2025 --- # 2025 年 Linux 核心設計課程期末展示 > 6 月 28 日,藉由 YouTube 直播進行 以下是「[Linux 核心設計](https://wiki.csie.ncku.edu.tw/linux/schedule)」課程的部分專題列表,詳見[完整專題列表](https://hackmd.io/@sysprog/linux2025-projects)。 - [ ] :rocket: 上午場: 探究 Linux 核心的本質 > :clock10: 10:00 $\to$ 12:00 > [直播錄影](https://youtu.be/Ae0jVIDCycU) * CPU 排程器之理論基礎 $\to$ [開發紀錄](https://hackmd.io/@sysprog/HyFtDjMfxg) > Linux 核心的 CPU 排程器已從 CFS 切換到 EEVDF,已不只是「挑選出下個任務」,背後涉及大量的理論,特別是涉及到排程的公平性、延遲需求,還有 CPU 頻寬控制的議題 * 群組排程的考量因素和落實 $\to$ [開發紀錄](https://hackmd.io/@sysprog/B14go-K-xx) > Linux v2.6.23 納入 CFS 後,隨即在 v2.6.24 引入 cgroups,並改變 CPU 排程器的考量,尤其雲端服務供應商著重的 Multi-tenant,更是其中群組排程的關鍵機制和應用場景 * sched_ext 及機器學習 $\to$ [開發紀錄](https://hackmd.io/@sysprog/BygEQ4dWxx) > 繼 EEVDF 取代 CFS 後,sched_ext (scx) 出現於 Linux v6.12,允許開發者藉由 eBPF,在使用者空間動態載入或抽換 CPU 排程器,結合機器學習,依據推論動態調整排程行為 * 作業系統底層機制 $\to$ [開發紀錄](https://hackmd.io/@sysprog/HyIQvDYWll) > 在 CPU 排程器得以運作前,核心有大量工作要進行,且隨著硬體的更迭,要理解的難度大幅提高,我們嘗試反璞歸真,在 32 位元 RISC-V 處理器上從無到有自幹小型作業系統核心,從而理解 Linux 核心底層的實作機制 - [ ] :rocket: 下午場: 藉由 Linux 核心解決真實世界的問題 > :clock130: 13:30 $\to$ 18:00 > [直播錄影](https://youtu.be/AI8shjBfUoE) * 輕量級容器實作 $\to$ [開發紀錄](https://hackmd.io/@sysprog/H18ne9Y-gl) > 藉由 Linux 核心提供的 namespaces, capabilities, seccomp 等機制,開發輕量級的 Linux 容器 (container) * 輕量級隔離運行環境 $\to$ [開發紀錄](https://hackmd.io/@sysprog/H1mxn47-gx) > 容器直接運行於宿主核心,因此可呼叫完整宿主 Linux 系統呼叫集合,若容器被入侵,將會暴露出大量的宿主核心攻擊面 (Attack surface)。本專案藉由 [User-mode linux](https://hackmd.io/@sysprog/user-mode-linux-env) (UML) 和系統呼叫攔截和二進位改寫機制,讓 UML 成為輕量級的隔離執行環境,在不依賴任何硬體虛擬化擴展和系統管理者權限的前提,得以高效運作 * rootkit 評估及應用 $\to$ [開發紀錄](https://hackmd.io/@sysprog/r1l3i4_Zge) > 提出不依賴 kallsyms 與 kprobe 的 Linux 核心 rootkit 實作手法,達成對多種核心組態的潛伏與操控,無需仰賴符號表揭露,即可取得 ksymtab 與系統呼叫表的實體地址。本 rootkit 支援核心層級的行程隱藏、網路連線偽裝、權限提升、remote shell 建立,及核心模組的永續注入等功能,包含靜態 ELF 程式碼注入 * 位元運算與數值系統的應用 $\to$ [開發紀錄](https://hackmd.io/@sysprog/B13UVSQWel) > 課程之所以強調學員須具備堅實的數學基礎,是因在各種應用場景中,數學往往扮演關鍵角色。以位元運算(bitwise operations, 簡稱 bitops)為例,其原理與多項式運算、平方根計算、指數函數等核心數學概念息息相關。本專題探討 bitops 如何結合這些數學基礎,並在 Linux 核心中實際發揮作用 * 高度並行的 Valkey 實作 $\to$ [開發紀錄](https://hackmd.io/@sysprog/HyqlsB7Zxe) > Linux Foundation 於 2024 年 3 月 28 日推出 [Valkey 專案](https://valkey.io/),基於尚未改動授權的 Redis 7.2.4 分支,並持續以 BSD 三條款發布,獲得雲端運算大廠的支持。本專案藉由 [Userspace RCU](https://liburcu.org/) 和一系列並行機制,提升 Valkey/Redis 的效能表現 * 運用核心的並行處理機制來下棋 $\to$ [開發紀錄](https://hackmd.io/@sysprog/SkRDH8tZxg) > 擴充課程的[第三份作業](https://hackmd.io/@sysprog/linux2025-kxo),實作可在 Linux 核心模組中切換多種人工智慧演算法,並同步修訂核心通訊介面以支援多使用者環境。此外,作業亦探討 lock-free 設計方法,藉此充分展現多核處理器下的任務分配與執行動態 * 異質多核通訊機制 $\to$ [開發紀錄](https://hackmd.io/@sysprog/ryvE2tK8C) > 本專題在物美價廉的 [Milk-V Duo](https://milkv.io/zh/duo) 硬體上面,利用其異質多核的 RISC-V,運作 Linux 核心和 [ThreadX](https://github.com/eclipse-threadx/threadx),並利用 [OpenAMP](https://github.com/OpenAMP/open-amp) 規範的 [RPMsg](https://github.com/nxp-mcuxpresso/rpmsg-lite),建立異質多核間的通訊 * 電源管理休眠/回復流程 $\to$ [開發紀錄](https://hackmd.io/@sysprog/BJaNz05Zle) > Linux 在行動裝置上的電源管理以系統 suspend (休眠) / Resume 為主要操作機制,核心依序執行 `suspend_enter`(同步檔案系統並暫停行程)、`prepare`(初始化省電模式), `suspend`, `suspend_late`(最後硬體關閉)與 `suspend_noirq`(關閉所有中斷);隨後藉由 `resume_noirq`, `resume_early`, `resume`, `complete` 與 `exit`(脫離行程)逆向還原。這些階段涵蓋 DRAM 與 Flash 的電源域切換、CPU C-state、動態電壓與頻率調整(DVFS)以及裝置 D-state(如 D0–D3)的管理。這些過程涉及大量操作,且常因 I/O 排隊而延宕,本專題嘗試分析這些瓶頸,運用 Perfetto 等追蹤工具擷取系統行為的追蹤紀錄,再搭配 pm-graph 繪製電源域與行程凍結時序,觀察 I/O 活動、CPU C-state 切換與中斷響應,藉由更細緻的鎖分段或階段重疊機制,縮短整體 Suspend/Resume 時間 * 雲端檔案系統 $\to$ [開發紀錄](https://hackmd.io/@sysprog/BJH6UVXZle) > 藉由 Linux 核心提供的 [FUSE](https://www.kernel.org/doc/html/latest/filesystems/fuse.html),打造在使用者空間運作的檔案系統,並存取雲端儲存空間,允許使用者掛載 Linux 檔案系統並存取雲端服務

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully