--- title: 2024 年 Linux 核心設計/實作課程期末專題 description: 「Linux 核心設計/實作」課程期末專題清單 tags: linux2024 --- # 2024 年 [Linux 核心設計/實作](https://wiki.csie.ncku.edu.tw/linux/schedule)課程期末專題 :::info :information_source: 注意事項 1. 所有專案都該確保在 Linux v6.8+ 運作 (搭配 Ubuntu Linux 24.04) 2. 所謂的「彙整」,是指能撰寫出完整的技術報告,範例: ==[位元運算整理](https://hackmd.io/@0xff07/BTS)== 和 ==[基於 C 語言標準研究與系統程式安全議題](https://hackmd.io/@sysprog/c-std-security)== 3. 專題不僅是課程評分的依據,而且是自己專業的證明,日後可列於個人簡歷 4. 請及早向 **[授課教師](https://www.facebook.com/JservFans)** 預約一對一討論,得知專題進行的期待方式 5. ==不要==自行填入「執行人」,應在與 **[授課教師](https://www.facebook.com/JservFans)** 討論後,再行更新 6. 每組由 1 到 2 位學員進行,一個題目可能有多個執行人獨立進行 7. 每位學員都該提供解說錄影 (並公開發布),否則期末專題不予計分 $\to$ **[專題解說錄影的示範](https://hackmd.io/@sysprog/Hy5hmaKBh)**,留意標示方式 8. ==[期末專題發表](https://hackmd.io/@sysprog/linux2024-showcase)== 安排於 6 月 30 日上午和下午,以 YouTube 直播進行 (事後提供錄影),授課教師會依據學員進行的狀況,挑出其中 12 位學員進行口頭報告,每位約 30 分鐘。沒安排在專題發表的學員,需要在 7 月 4 日中午前,挑出至少 5 個由其他學員進行的題目,觀看其解說錄影、開發紀錄、程式碼和成果進行批評,紀錄於下方對應專案的開發紀錄中,針對個別題目,至少提出 1 個問題或建議。 * 比照[第三次作業](https://hackmd.io/@sysprog/linux2024-review)的風格,在自己以外的學員的開發紀錄上,留下 `Reviewed by 你的GitHub帳號名稱` 的意見 9. 針對其他學員 (含授課教師和社會人士) 在開發紀錄頁面提出的問題或建議,務必在 7 月 6 日中午前予以回應和改進。 ::: ## simplefs 為了探索 Linux VFS (virtual file system) 介面及檔案系統實作機制,我們從無到有撰寫一個運作於 Linux 核心模式中的精簡檔案系統,原始程式碼約一千餘行,支援基本的檔案和目錄處理,同時也考慮到權限和並行處理的議題。本任務預計整合 [jbd2](https://www.kernel.org/doc/html/latest/filesystems/ext4/journal.html),使得 simplefs 具備 [journaling](https://en.wikipedia.org/wiki/Journaling_file_system) 特徵。 * 相關資訊: * [開發紀錄-1](https://hackmd.io/@Nahemah1022/rJo1sAtid) * [開發紀錄-2](https://hackmd.io/@fwfly/simplefs) * [開發紀錄-3](https://hackmd.io/@freshLiver/linux-vfs-main/) * [開發紀錄-4](https://hackmd.io/@sysprog/BymZ7EeH3) * 執行人: HotMercury, jason50123 $\to$ [開發紀錄](https://hackmd.io/@sysprog/r1e08fg7A) ## 視窗系統實作和 Linux 整合 全向量的圖形 (vector graphics) 處理系統專題,希望可以理解相關 rect clipping 相關演算法以及精進 fixed point 的操作並且改進,最終利用 Linux framebuffer 和 input 子系統來展現整個視窗系統。 * 執行人: marvin0102 $\to$ [開發紀錄](https://hackmd.io/@sysprog/B13GqdgQ0) ## Linux 排程器研究 探討 Linux 排程器內部設計,改進《Demystifying the Linux CPU Scheduler》,並尋求貢獻程式碼到 Linux 核心的機會 * 相關資訊 * [Let's Publish a Collaborative e-Book for Linux Kernel](https://hackmd.io/LXD339QGRbaEBvESooItTg) * [git commits](https://lore.kernel.org/all/?q=%22Jui-Tse+Huang%22) * [BORE (Burst-Oriented Response Enhancer) CPU Scheduler](https://hackmd.io/@foxhoundsk/bore-sched),是 [CachyOS](https://cachyos.org/) 預設的 CPU 排程器 * [Reducing CPU scheduler latency in Linux](https://www.diva-portal.org/smash/get/diva2:1630380/FULLTEXT01.pdf) * [Reducing latency spikes by tuning the CPU scheduler](https://www.scylladb.com/2016/06/10/read-latency-and-scylla-jmx-process/) * [開發進度-1](https://hackmd.io/@steven1lung/scheduler_notes) * [開發紀錄-2](https://hackmd.io/@SmallHanley/linux2022-projects) * [開發紀錄-3](https://hackmd.io/@sysprog/BJh9FdlS2) * 執行人: vax-r $\to$ [開發紀錄](https://hackmd.io/@sysprog/BJdyxvxX0) * 執行人: Kuanch, devarajabc $\to$ [開發紀錄](https://hackmd.io/@sysprog/rkJd7TFX0) * 執行人: yenslife $\to$ [開發紀錄](https://hackmd.io/@sysprog/rysYj43ER) * 執行人: ShawnXuanc $\to$ [開發紀錄](https://hackmd.io/@sysprog/SyTH65LUC) * 執行人: otteryc $\to$ [開發紀錄](https://hackmd.io/@sysprog/H1u6D9LI0) * 執行人: YangYeh-PD $\to$ [開發紀錄](https://hackmd.io/@sysprog/HyFog6kw0) ## 並行程式設計 改進〈[並行和多執行緒程式設計](https://hackmd.io/@sysprog/concurrency)〉系列講座和〈[Concurrency Primer](https://github.com/sysprog21/concurrency-primer)〉 * 執行人: weihsinyeh $\to$ [開發紀錄](https://hackmd.io/@sysprog/H1dCuDxQR) * 執行人: LULser0204 $\to$ [開發紀錄](https://hackmd.io/@sysprog/H1_iu8CSA) * 執行人: jeremy90307 $\to$ [開發紀錄](https://hackmd.io/@sysprog/HyDijL0HR) * 執行人: yutingshih $\to$ [開發紀錄](https://hackmd.io/@sysprog/BkNqX71L0) * 執行人: kkkkk1109 $\to$ [開發紀錄](https://hackmd.io/@sysprog/Skyd45U8A) * 執行人: ssheep773 $\to$ [開發紀錄](https://hackmd.io/@sysprog/SJoqB8Y80) * 執行人: stevendd543 $\to$ [開發紀錄](https://hackmd.io/@sysprog/SJXN0y9UR) * 執行人: yourui1017 $\to$ [開發紀錄](https://hackmd.io/@sysprog/SJeGxDcU0) * 執行人: wu81177 $\to$ [開發紀錄](https://hackmd.io/@sysprog/rk4C6djLR) * 執行人: LindaTing0106 $\to$ [開發紀錄](https://hackmd.io/@sysprog/B1PfD838R) * 執行人: Shiang1212 $\to$ [開發紀錄](https://hackmd.io/@sysprog/S1bpKK3LC) * 執行人: chloe0919 $\to$ [開發紀錄](https://hackmd.io/@sysprog/r1ddDf-wR) * 執行人: MiohitoKiri5474 $\to$ [開發紀錄](https://hackmd.io/@sysprog/HySMWU-DR) * 執行人: zack-404 $\to$ [開發紀錄](https://hackmd.io/@sysprog/rJbuY8ZvC) * 執行人: youjiaw $\to$ [開發紀錄](https://hackmd.io/@sysprog/B1TOj7mwR) * 執行人: MathewSu-001 $\to$ [開發紀錄](https://hackmd.io/@sysprog/SJglnrmvR) RCU 研究 * 執行人: eleanorLYJ $\to$ [開發紀錄](https://hackmd.io/@sysprog/HkkWZ20B0) * 執行人: yuyuan0625 $\to$ [開發紀錄](https://hackmd.io/@sysprog/Byga7v9U0) 運用並行處理來強化既有的應用場景 * 執行人: yeh-sudo $\to$ [開發紀錄](https://hackmd.io/@sysprog/B1W2HKTER) 高性能網頁伺服器 * 執行人: fatcatorange $\to$ [開發紀錄](https://hackmd.io/@sysprog/HkyVuh0NR) * 執行人: han1018 $\to$ [開發紀錄](https://hackmd.io/@sysprog/HkyNQeJrR) * 執行人: w96086123 $\to$ [開發紀錄](https://hackmd.io/@sysprog/BkJI3u0SA) * 執行人: yqt2000 $\to$ [開發紀錄](https://hackmd.io/@sysprog/BybmuLYLA) * 執行人: Hualing-Chiu $\to$ [開發紀錄](https://hackmd.io/@sysprog/ByRD8xcUR) * 執行人: Ackerman666 $\to$ [開發紀錄](https://hackmd.io/@sysprog/SJo8qe5LA) * 執行人: SimonLee0316 $\to$ [開發紀錄](https://hackmd.io/@sysprog/Byq9C2q80) * 執行人: yan112388 $\to$ [開發紀錄](https://hackmd.io/@sysprog/S1GmcggvC) * 執行人: williamlin0518 $\to$ [開發紀錄](https://hackmd.io/@sysprog/BJ20tH7vA) ## 強化 Linux 核心的測試模組 * 執行人: 164253 $\to$ [開發紀錄](https://hackmd.io/@sysprog/ByvfKXXPC) ## 〈每位程式開發者都該有的記憶體知識〉修訂 〈[每位程式開發者都該有的記憶體知識](https://sysprog21.github.io/cpumemory-zhtw/)〉翻自 Ulrich Drepper 於 2007 年撰寫的論文〈[What Every Programmer Should Know About Memory](https://www.akkadia.org/drepper/cpumemory.pdf)〉(版次: 1.0),儘管目前已涵蓋第一到第八章,然而仍有大量的改進要進行 * 執行人: st10740 $\to$ [開發紀錄](https://hackmd.io/@sysprog/HJRd-jUUA) * 執行人: chishuo9810 $\to$ [開發紀錄](https://hackmd.io/@sysprog/BknknG-P0) ## 改進 Linux 核心的 `lib/list_sort.c` 解釋 Linux 核心的 `lib/{list_}sort.c` 現有的 bottom-up merge/heap sort 實作,並尋求效能改進,例如 hybrid sort 的引入 * 參考資訊 * [Bottom-up Heapsort](https://hackmd.io/@Uduru0522/bottomup-heapsort-analyze) * [Timsort 研究與對 Linux 核心貢獻嘗試](https://hackmd.io/@yanjiew/linux2023q1-timsort) * [開發紀錄](https://hackmd.io/@sysprog/Hy5hmaKBh) * 執行人: fennecJ $\to$ [開發紀錄](https://hackmd.io/@sysprog/BJPBcQ34C) * 執行人: randyuncle $\to$ [開發紀錄](https://hackmd.io/@sysprog/ryr7zfh4R) ## 在 RISC-V 處理器/模擬器運作 Linux 核心 * 相關資訊 * [從零開始的 RISC-V SoC 架構設計與 Linux 核心運行](https://hackmd.io/@w4K9apQGS8-NFtsnFXutfg/B1Re5uGa5) * [開發紀錄](https://hackmd.io/@sysprog/S1jNiYgr2) * 執行人: millaker $\to$ [開發紀錄](https://hackmd.io/@sysprog/HyjiP43N0) * 執行人: ranvd $\to$ [開發紀錄](https://hackmd.io/@sysprog/HyQ9UQ2E0) * 執行人: nelson0720j $\to$ [開發紀錄](https://hackmd.io/@sysprog/SkbSCLRBA) ## RISC-V 最佳化編譯器實作 shecc 最初是為了講解編譯器設計而開發的精簡 C 編譯器,可編譯自身 (self-hosting),直接輸出機械碼,不依賴其他開發工具,後來大幅提升對 C 語法的支援,並引入 SSA 和若干最佳化策略,是同等級最佳化編譯器之實作。 * 相關資訊 * [開發紀錄](https://hackmd.io/@sysprog/HkqE5DKqP) * 執行人: nosba0957, vacantron $\to$ [開發紀錄](https://hackmd.io/@sysprog/H11Da3FQA) ## 裝置驅動程式開發 * 執行人: jychen0611 $\to$ [開發紀錄](https://hackmd.io/@sysprog/rJ-LF4nNC) * 執行人: hungyuhang $\to$ [開發紀錄](https://hackmd.io/@sysprog/HJBxRsRr0) * 執行人: pao0626 $\to$ [開發紀錄](https://hackmd.io/@sysprog/rJQJo98LC) * 執行人: mesohandsome $\to$ [開發紀錄](https://hackmd.io/@sysprog/SJS4uStUA) * 執行人: yinghuaxia $\to$ [開發紀錄](https://hackmd.io/@sysprog/S1l3ZlcLA) * 執行人: jimmylu890303 $\to$ [開發紀錄](https://hackmd.io/@sysprog/ryG0h25I0) * 執行人: padaray $\to$\ [開發紀錄](https://hackmd.io/@sysprog/ByzkF6xDA) ## 軟硬體整合 * 執行人: HenryChaing $\to$ [開發紀錄](https://hackmd.io/@sysprog/ryvE2tK8C) * 執行人: hugo0406 $\to$ [開發紀錄](https://hackmd.io/@sysprog/rJhbQU-wR) ## 記憶體管理 * 執行人: SHChang-Anderson $\to$ [開發紀錄](https://hackmd.io/@sysprog/rkOByUtI0) * 執行人: kevinzxc1217 $\to$ [開發紀錄](https://hackmd.io/@sysprog/rkZQsLhLR) ## 亂數產生器 * 執行人: teresasa0731 $\to$ [開發紀錄](https://hackmd.io/@sysprog/BkhlALt8A) ## eBPF 和電腦網路 * 執行人: SuNsHiNe-75 $\to$ [開發紀錄](https://hackmd.io/@sysprog/H1AORs8I0) * 執行人: gawei1206 $\to$ [開發紀錄](https://hackmd.io/@sysprog/SyKqH2ILA) * 執行人: jujuegg $\to$ [開發紀錄](https://hackmd.io/@sysprog/ryJXC9iIR) * 執行人: aa860630, steven523 $\to$ [開發紀錄](https://hackmd.io/@sysprog/BkxyL1bvC) ## LLaMA 效能分析 * 執行人: LIAO-JIAN-PENG $\to$ [開發紀錄](https://hackmd.io/@sysprog/SJCtkQhVA) * 執行人: vestata $\to$ [開發紀錄](https://hackmd.io/@sysprog/ryIUgeJBC) * 執行人: Lisa304 $\to$ [開發紀錄](https://hackmd.io/@sysprog/BJ1T7UK80) ## bitops * 執行人: yy214123, yenshipotato $\to$ [開發紀錄](https://hackmd.io/@sysprog/rkt-cdRrC) * 執行人: Terry7Wei7 $\to$ [開發紀錄](https://hackmd.io/@sysprog/rkpgxY0HC) * 執行人: Lccgth $\to$ [開發紀錄](https://hackmd.io/@sysprog/HyhMnoRrA) * 執行人: allenliao666 $\to$ [開發紀錄](https://hackmd.io/@sysprog/HkxFLnvL0) * 執行人: 56han $\to$ [開發紀錄](https://hackmd.io/@sysprog/SkQeDkc80) * 執行人: dockyu $\to$ [開發紀錄](https://hackmd.io/@sysprog/Hy-CNF98A) * 執行人: dcciou $\to$ [開發紀錄](https://hackmd.io/@sysprog/BJDY-YoL0) * 執行人: david965154 $\to$ [開發紀錄](https://hackmd.io/@sysprog/Sko-j01v0) ## 重做第三次作業 * 執行人: cheezad $\to$ [開發紀錄](https://hackmd.io/@sysprog/r1faEmnVR) * 執行人: Daniel-0224 $\to$ [開發紀錄](https://hackmd.io/@sysprog/rkF2M6FIA) ## 重作第四次作業 * 執行人: Petakuo $\to$ [開發紀錄](https://hackmd.io/@sysprog/r1WImnwIC) * 執行人: YiChiChao $\to$ [開發紀錄](https://hackmd.io/@sysprog/H1lZMIK8C) * 執行人: rain20010126 $\to$ [開發紀錄](https://hackmd.io/@sysprog/HyucBSK8C) * 執行人: marsh-fish $\to$ [開發紀錄](https://hackmd.io/@sysprog/HkZcqus8R) * 執行人: ICARUSHERALD96500 $\to$ [開發紀錄](https://hackmd.io/@sysprog/rkI1zU3IC) * 執行人: Wufangni $\to$ [開發紀錄](https://hackmd.io/@sysprog/SJtunk-PR) * 執行人: Ken-LuWeiRu $\to$ [開發紀錄](https://hackmd.io/@sysprog/H1Jr7XmPC) ## 重做第六次作業 * 執行人: Willsonbo $\to$ [開發紀錄](https://hackmd.io/@sysprog/BkIOuG2VA) * 執行人: yu-hsiennn $\to$ [開發紀錄](https://hackmd.io/@sysprog/rJBcqBFUR) * 執行人: ChengChaoChun $\to$ [開發紀錄](https://hackmd.io/@sysprog/B1e8S6tU0) * 執行人: brian049 $\to$ [開發紀錄](https://hackmd.io/@sysprog/ry5zvDcUA) * 執行人: tintinjian12999 $\to$ [開發紀錄](https://hackmd.io/@sysprog/BkqsnDc8R) * 執行人: lintin528 $\to$ [開發紀錄](https://hackmd.io/@sysprog/B1hG_v2I0) * 執行人: yc199911 $\to$ [開發紀錄](https://hackmd.io/@sysprog/SkjrHaxP0) * 執行人: ollieni $\to$ [開發紀錄](https://hackmd.io/@sysprog/B1Q1e1bDR) ## 重做 lab0 並彙整學員成果 改進並彙整其他學員的成果 * 執行人: popo8712 $\to$ [開發紀錄](https://hackmd.io/@sysprog/Syc7ROemA) * 執行人: bclegend $\to$ [開發紀錄](https://hackmd.io/@sysprog/rJk76rtIR) * 執行人: ChenFuhuangKye $\to$ [開發紀錄](https://hackmd.io/@sysprog/BkltCg5IA) * 執行人: jerry7961 $\to$ [開發紀錄](https://hackmd.io/@sysprog/Sy85Ue-DC) * 執行人: Booker-Chen $\to$ [開發紀錄](https://hackmd.io/@sysprog/SyHrtSWDC) * 執行人: brucelee503jo3 $\to$ [開發紀錄](https://hackmd.io/@sysprog/Bkvp6VGDC) * 執行人: YeeeLiang $\to$ [開發紀錄](https://hackmd.io/@sysprog/SJYUsM7wC)