Try   HackMD

2021 年春季 Linux 核心設計課程期末專題

tags: linux2021

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 →
注意事項

  1. 所有專案都該確保在 Linux v5.4+ 運作
  2. 所謂的「彙整」,是指能撰寫出完整的技術報告,範例: 位元運算整理基於 C 語言標準研究與系統程式安全議題
  3. 專題不僅是課程評分的依據,而且是自己專業的證明,日後可列於個人簡歷
  4. 請及早向授課教師預約一對一討論,得知專題進行的方式

LittleFS

Arm Mbed 作業系統有個子項目名為 littlefs,顧名思義就是針對嵌入式裝置開發的小型檔案系統,我們可透過 FUSE 掛載到 Linux 或 macOS 作為檔案系統,卻不用撰寫對應的核心模組。本任務嘗試理解 littlefs 運作機制,包含其工具。

相關討論:

執行人: bobhsiao0306

simplefs

題目: 從無到有開發針對 Linux 核心的檔案系統

為了探索 Linux VFS (virtual file system) 介面及檔案系統實作機制,我們從無到有撰寫一個運作於 Linux 核心模式中的精簡檔案系統,原始程式碼約一千餘行,支援基本的檔案和目錄處理,同時也考慮到權限和並行處理的議題。

相關討論:

執行人: Nahemah1022

開發紀錄
執行人: fwfly
開發紀錄

usbip

以 USB/IP 來說,這個實作已整合進 Linux 核心,能夠將 USB 裝置透過網路連線重新導向到另外一台電腦,具體來說:

  • USB 裝置實際所在的電腦稱為 server (伺服器),接收重導那台稱為 client(客戶端;
  • client 端可搭配 udev 和相關的工具,接受裝置重新導向後,自動掛載 server 端的 USB 裝置;
    這樣的情境在虛擬化環境變得重要,因為一台伺服器可提供遠端桌面所需要資源,但是 USB 裝置往往就需要適度分享,於是透過 USB/IP 可讓遠端裝置分享變得可行。

相關討論:

vcam

題目: 打造 Linux 虛擬攝影機裝置驅動程式

vcam 是個針對 Linux 核心開發的虛擬攝影機裝置,全部程式碼僅 1 千 5 百行,從而可理解 V4L2 (video fro Linux APIs, version 2) 的使用和 Linux 多媒體架構。開發一個虛擬的攝影機裝置除了理解 Linux 核心設計外,也有資訊安全的幫助,例如你可以安插相關程式碼,紀錄有哪些應用程式偷偷啟動攝影機,但過程中又不會揭露真正的隱私。本議程不僅討論 V4L2,也涵蓋 DMA-Buf 這樣著重 Zero-copy 裝置驅動程式運作機制。

相關討論:

執行人:WayneLin1992

開發紀錄 / GitHub

/dev/mem 研究

編撰 Linux 核心的 /dev/mem 裝置,強化 eBPF, crash 等工具的運用,目標是「成為電腦的主人」 —— 想改哪段記憶體就動手變更

執行人: jhan1998

開發紀錄

Linux 排程器研究

研讀 "Trace Linux Kernel Scheduler Events" 並擴充

執行人: RZHuangJeff

開發紀錄
執行人: henrybear327

Linux 核心 CoW 研究

探討 Linux 核心內部 CoW 的實作機制

執行人: linD026

開發紀錄

改進 mimalloc

mimalloc 是 Microsoft Research 主導的開放原始碼專案,旨在提出更輕量且更有效率的記憶體管理器 (即 malloc/free 等函式) 的實作。

執行人: hankluo6

開發紀錄

High performance Web Server

題目: 高效能網頁伺服器 —— 針對 Linux 核心和進階系統呼叫重新設計

探討從無到有打造 Linux 平台的高效能網頁伺服器,涵蓋是否該將伺服器實作於 Linux 核心內部、並行處理、I/O 模型、epoll、React pattern,和 Web 伺服器在事件驅動架構的考量。

執行人: D4nnyLee, XDEv11

開發紀錄

quiz2A - list

重做 第 2 週測驗題 的第 1 部分,並彙整學員們的作業成果,提出效率更好的實作。

執行人: shanihsu

開發紀錄
執行人: kevinlin529

slab

第 2 週測驗題 的第 2 部分提到 slab allocator,請彙整學員們的作業成果,並整理為新的共筆,新增工作:

  1. 回顧 Linux 核心設計: 記憶體管理,理解必要的背景知識
  2. 針對 Linux v5.20,在 User-Mode Linux 進行觀察
  3. 透過 QEMU 建立模擬環境,載入 Linux v5.20 並善用 SlabDbg 追蹤 slab/slub 的內部行為

執行人: gyes00205

開發紀錄

quiz2C - bitcpy

重做 第 2 週測驗題 的第 3 部分,並彙整學員們的作業成果,提出效率更好的實作,也該探討 Linux 核心原始程式碼裡頭的案例

執行人: Jings1017

開發紀錄
執行人: IzsKon

quiz2D - string interning

重做 第 2 週測驗題 的第 4 部分,並彙整學員們的作業成果,提出效率更好的實作,需要考慮到多執行緒環境

執行人: Zxiro

開發紀錄
執行人: William0715

fibdrv

重做 fibdrv 並彙整學員們的作業成果

執行人: yellow-hank

開發紀錄 / GitHub
執行人: xxiex123
開發記錄

quiz3 - SSO/CoW

重做 第 3 週測驗題,並彙整學員們的作業成果,提出效率更好的實作,也該探討 Linux 核心原始程式碼裡頭的案例

執行人: yellow951321

開發紀錄

quiz4 - thread pool

重做 第 4 週測驗題,並彙整學員們的作業成果,提出效率更好的實作。應當考慮到 CPU Affinity,參考 Thread safety with affine thread pools

執行人: iLeafy11
執行人: xswzaq44321

暫停: 重做 sort 並彙整學員們的作業成果,提出效率更好的實作,需要在 Linux 核心內部驗證

執行人: Uduru0522, ccs100203

Concurrent Programming

研究 第 14 週測驗題 (第 1 部分) 和 第 17 週測驗題,解讀程式運作機制、量化程式執行表現 (與 lock-based 比較),提出改進方案
執行人: Uduru0522, ccs100203

開發紀錄

quiz5A - SSO

重做 第 5 週測驗題 的第 1 部分,並彙整學員們的作業成果,提出效率更好的實作

執行人: andy78644

開發紀錄
執行人: richard880523

kHTTPd

改寫 kHTTPd,使用 CMWQ,並支援以下特徵:

  1. 學習 kws 的核心參數風格,指定 port, worker, wwwroot 等設定
  2. 實作 HTTP request cache
  3. 部分 HTTP 1.1

執行人: ParkerMactavish
執行人: bakudr18

開發紀錄

quiz6A - arbitrary-precision arithmetic

重做 第 6 週測驗題 的第 1 部分,並彙整學員們的作業成果,提出效率更好的實作,需要探討 Linux 核心的大數運算案例

執行人: tigger12613

開發紀錄 / GitHub

quiz6B - hash table

重做 第 6 週測驗題 的第 2 部分,並彙整學員們的作業成果,提出效率更好的實作,需要探討 Linux 核心的案例

執行人: Chialiang86

開發紀錄 / Github

quiz6C - fiber

重做 第 6 週測驗題 的第 3 部分,並彙整學員們的作業成果

執行人: nickchenchj

開發紀錄 / GitHub

quiz7A - shell

重做 第 7 週測驗題 的第 1 部分,包含延伸問題

執行人: limaoxd 開發紀錄 / GitHub
執行人: robertlin0401

開發紀錄 / GitHub

quiz7B - multi-threaded web server

重做 第 7 週測驗題 的第 2 部分,包含延伸問題

執行人: secminhr

開發紀錄 / Github

quiz7C - SPSC

重做 第 7 週測驗題 的第 3 部分,包含延伸問題

執行人: chiehen

開發紀錄 / GitHub

quiz7D - message bus

重做 第 7 週測驗題 的第 4 部分,包含延伸問題

執行人: wiasliaw

開發紀錄 / GitHub

quiz8A - SPMC

重做 第 8 週測驗題 的第 1 部分,包含延伸問題

執行人: cyrong

開發紀錄

quiz8B - MapReduce

重做 第 8 週測驗題 的第 2 部分,包含延伸問題

執行人: ilkclord

開發紀錄

quiz9 - MPMC

重做 第 9 週測驗題,包含延伸問題

執行人: AmyLin0210

quiz10 - channel

重做 第 10 週測驗題,包含延伸問題

執行人: ambersun1234

開發紀錄

quiz11 - event loop

重做 第 11 週測驗題,包含延伸問題

執行人: Julian-Chu

開發紀錄

開放原始碼生態研究

重做 culture,並彙整學員們的作業成果

執行人: sherisea

開發紀錄

Real-Time Linux 研究

研究 xenomai 於 real time linux 上的效能表現

執行人: RainbowEye0486, fdfdd12345628

開發紀錄