--- title: 2024 年 Linux 核心設計/實作課程期末展示 description: 「Linux 核心設計/實作」課程期末展示 tags: linux2024 --- # 2024 年 Linux 核心設計/實作課程期末展示 詳見 [Linux 核心設計/實作](https://wiki.csie.ncku.edu.tw/linux/schedule)課程的[完整專題列表](https://hackmd.io/@sysprog/linux2024-projects)。 > 7 月 2 日晚間安排[期末專題檢討的直播](https://youtube.com/live/JSUkg8KXx-Q?feature=share) - [ ] :rocket: 上午場: 探究 Linux 核心的本質 > :clock10: 10:00 $\to$ 12:00 * 從 CFS, EAS, 到 EEVDF : Kuanch, devarajabc $\to$ [開發紀錄](https://hackmd.io/@sysprog/rkJd7TFX0) > 自 Linux 2.6.23 起,CFS 取代 O(1) 排程器,引入 proportional-share 手法以便按比例分配運算資源,自此奠定 Linux 核心的排程機制;Linux v5.1 引入 EAS,提升高性能移動裝置的能源效率;Linux v6.6 以 EEVDF 成為新的預設 CPU 排程器,對 CFS 十餘年打下的基礎進行升級。 * 還政於民的 sched_ext 及機器學習如何幫助 CPU 排程 : vax-r $\to$ [開發紀錄](https://hackmd.io/@sysprog/BJdyxvxX0) > Meta 提出 sched_ext 這項排程器的重大變革,允許開發者依據特定的工作負載和任務規劃,進行客製化的排程,而 EEVDF 則維持通用的排程。 * EEVDF 相較於 CFS 的量化比較 : ShawnXuanc $\to$ [開發紀錄](https://hackmd.io/@sysprog/SyTH65LUC) > 費曼說過:「「透過科學產生的世界觀有其價值。那是一個美妙神奇的世界,經由新實驗產生的結果所呈現」。理解 Linux CPU 排程的最好方式是進行大量實驗並對照原始程式碼。 * 開發具體而微的 Linux 檔案系統 : HotMercury, jason50123 $\to$ [開發紀錄](https://hackmd.io/@sysprog/r1e08fg7A) > 從無到有開發精簡的檔案系統,簡潔而不簡陋,除了基本功能外,近期實作日誌機制,當檔案系統發生故障 (如核心崩潰或突然停電),更容易保持一致性,且可較快恢復。 - [ ] :rocket: 下午場: 藉由 Linux 核心解決真實世界的問題 > :clock130: 13:30 $\to$ 17:30 > [成果展示錄影 (下)](https://youtube.com/live/qUd1PtF-R38) * 運用並行處理來強化網站資料存取的效率 : yeh-sudo $\to$ [開發紀錄](https://hackmd.io/@sysprog/B1W2HKTER) > 依據 [DB-Engines Ranking](https://db-engines.com/en/ranking) (June 2024),Redis 是排行第 6 名的資料庫引擎,其作用是搭配其他資料庫,以自身的 in-memory key-value cache 來加速多種分散式服務場景。藉由 Linux 核心衍生的 Userspace RCU,本專案嘗試強化 Redis (及其後繼 Valkey) 的並行處理能力,得以大幅提升其資料吞吐量 (throughput)。 * 高性能網頁伺服器 : fatcatorange $\to$ [開發紀錄](https://hackmd.io/@sysprog/HkyVuh0NR) > kHTTPd 復刻 Linux 核心一度內建的專案,由核心直接處理 HTTP 連線,達到大幅超越尋常網頁伺服器的高吞吐量,也適合作為核心 API 整合和驗證的測試環境。 * 回顧並行程式設計教材 : weihsinyeh $\to$ [開發紀錄](https://hackmd.io/@sysprog/H1dCuDxQR) > 探討真實世界中若干並行程式設計議題,成果將陸續彙整到《[Concurrency Primer](https://github.com/sysprog21/concurrency-primer)》 * 中場休息到 15:15 * 建構 RISC-V 相容處理器並運作 Linux 核心 : millaker $\to$ [開發紀錄](https://hackmd.io/@sysprog/HyjiP43N0) > 自幹 CPU 並在其上運作 Linux 核心,是電機資訊科系學生的浪漫 * 實作多核 RISC-V 處理器模擬環境並運作 Linux 核心 : ranvd $\to$ [開發紀錄](https://hackmd.io/@sysprog/HyQ9UQ2E0) > 在 [semu](https://github.com/sysprog21/semu) 的基礎之上,實作 hart state meangetment (HSM),使其達到多核 RISC-V 系統模擬。 * 打造具備網路連線的精簡虛擬機器 : jimmylu890303 $\to$ [開發紀錄](https://hackmd.io/@sysprog/ryG0h25I0) > 在 KVM 的基礎之上,建構精簡且得以運作 Linux 核心的虛擬機器,使其藉由 VirtIO 具備電腦網路連線能力。 * 開發無線網路裝置驅動程式 : jychen0611 $\to$ [開發紀錄](https://hackmd.io/@sysprog/rJ-LF4nNC) > 從無到有開發具體而微的 WiFi 裝置驅動程式,採用 cfg80211 框架,建構虛擬的無線網路環境。 * 開發虛擬攝影機裝置驅動程式 : hungyuhang $\to$ [開發紀錄](https://hackmd.io/@sysprog/HJBxRsRr0) > 針對 Linux 核心開發的虛擬攝影機裝置,從而可理解 V4L2 (video fro Linux APIs, version 2) 的使用和 Linux 多媒體架構。