---
title: 2022 年 Linux 核心設計/實作課程期末專題
description: 「Linux 核心設計/實作」課程期末專題清單
tags: linux2022
---
# 2022 年 [Linux 核心設計/實作](http://wiki.csie.ncku.edu.tw/linux/schedule)課程期末專題
:::info
:information_source: 注意事項
1. 所有專案都該確保在 Linux v5.4+ 運作
2. 所謂的「彙整」,是指能撰寫出完整的技術報告,範例: ==[位元運算整理](https://hackmd.io/@0xff07/BTS)== 和 ==[基於 C 語言標準研究與系統程式安全議題](https://hackmd.io/@sysprog/c-std-security)==
3. 專題不僅是課程評分的依據,而且是自己專業的證明,日後可列於個人簡歷
4. 請及早向 **[授課教師](https://www.facebook.com/JservFans)** 預約一對一討論,得知專題進行的方式
5. 授課教師將依據學員的投入狀況,指派新的題目 (學員可提案),或是要求學員重作現有的作業及測驗題
6. ==不要==自行填入「執行人」,應在與 **[授課教師](https://www.facebook.com/JservFans)** 討論後,再行更新
7. 每位學員均獨立進行專題 (除非學員說服授課教師,提供需要二位方可進行的強烈理由),但一個題目可能有多個執行人
:::
## `PREEMPT_RT` 效能分析和改進
`PREEMPT_RT` 首先將中斷處理轉化為核心執行緒,保證它不再佔用任意 context,這保證即便中斷被即時行程搶佔,也不會連累無辜地被它佔用核心堆疊的行程,再者,將一般行程使用的 spinlock 改為可以睡眠的 mutex (所謂的 sleeping spinlock),如此可保證喚醒即時行程後,立即執行該即時行程。`PREEMPT_RT` 部分的成果已整合進 Linux 核心主幹,不過仍有若干效能議題需要釐清和改進。
* 相關資訊:
* [PREEMPT_RT 作為邁向硬即時作業系統的機制](https://hackmd.io/@sysprog/preempt-rt)
* [Towards PREEMPT_RT for the Full Task Isolation](https://ossna2022.sched.com/event/11NtQ)
* 執行人: OscarShiang $\to$ [開發紀錄](https://lore.kernel.org/all/?q=%22oscar+shiang%22)
## Linux 排程器解析和改進
探討 Linux 排程器內部設計,並尋求貢獻程式碼到 Linux 核心的機會
* 相關資訊: [Let's Publish a Collaborative e-Book for Linux Kernel](https://hackmd.io/LXD339QGRbaEBvESooItTg)
* 執行人: forward-jt $\to$ [開發紀錄](https://lore.kernel.org/all/?q=%22Jui-Tse+Huang%22)
## Linux 排程器研究
研讀《Demystifying the Linux CPU Scheduler》並改進書中論述和實驗
* 執行人: steven1lung $\to$ [開發進度](https://hackmd.io/@steven1lung/scheduler_notes)
* 執行人: cantfindagoodname $\to$ [開發進度](https://hackmd.io/@cantfindagoodname/notes)
## BMQ 排程器研究
[Project C](https://gitlab.com/alfredchen/projectc) 提供 BMQ (Bit Map Queue),著重於降低高互動性任務 (例如 Linux 桌面應用程式) 的排程延遲 (scheduling latency)。本專案嘗試量化 BMQ 表現,並探討其內部原理,過程中也會比較 BORE 一類的排程器改進方案。
* 相關資訊
* [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/)
* 執行人: SmallHanley $\to$ [開發紀錄](https://hackmd.io/@SmallHanley/linux2022-projects)
## vwifi 虛擬無線網路裝置驅動程式和實驗環境
[vwifi](https://github.com/sysprog21/vwifi) 是個程式碼約五百行,具體而微的 WiFi 裝置驅動程式,採用 cfg80211 框架。目前 vwifi 支援 scan, connect, disconnect 等 cfg80211 的介面操作,並得以正確處理 Tx/Rx 封包。
* 執行人: rickywu0421 $\to$ [開發記錄](https://hackmd.io/@rickywu0421/FinalProject)
## 改進 Linux 核心字串處理函式
Linux 核心儘管已有大量開發者投入,但仍存在改進空間,例如[第 8 週隨堂測驗](https://hackmd.io/@sysprog/linux2022-quiz8/)展示 `memchr` 的實作可藉由 SWAR 技巧予以改進,初步可帶來 4 倍效能提升。這當然是可對 Linux 核心貢獻的機會。
* 執行人: arthurchang09 $\to$ [開發紀錄](https://hackmd.io/@arthur-chang/linux2022-quiz8)
## 改進 Linux 核心的 `lib/sort.c`
解釋 Linux 核心的 `lib/sort.c` 現有的 bottom-up heap sort 實作,並尋求效能改進,例如 hybrid quick sort 的引入
* 相關資訊: [Bottom-up Heapsort](https://hackmd.io/@Uduru0522/bottomup-heapsort-analyze)
* 執行人: Uduru0522
## simplefs
為了探索 Linux VFS (virtual file system) 介面及檔案系統實作機制,我們從無到有撰寫一個運作於 Linux 核心模式中的精簡檔案系統,原始程式碼約一千餘行,支援基本的檔案和目錄處理,同時也考慮到權限和並行處理的議題。
* 相關資訊:
* [開發紀錄 1](https://hackmd.io/@Nahemah1022/rJo1sAtid)
* [開發紀錄 2](https://hackmd.io/@fwfly/simplefs)
* [Issue #20](https://github.com/sysprog21/simplefs/issues/20)
* 執行人: freshLiver $\to$ [開發紀錄](https://hackmd.io/@freshLiver/linux-vfs-main/)
## 打造 Linux 虛擬攝影機裝置驅動程式
[vcam](https://github.com/sysprog21/vcam) 是個針對 Linux 核心開發的虛擬攝影機裝置,全部程式碼僅 1 千 5 百行,從而可理解 V4L2 (video fro Linux APIs, version 2) 的使用和 Linux 多媒體架構。開發一個虛擬的攝影機裝置除了理解 Linux 核心設計外,也有資訊安全的幫助,例如你可以安插相關程式碼,紀錄有哪些應用程式偷偷啟動攝影機,但過程中又不會揭露真正的隱私。
* 相關資訊:
* [2020 年開發紀錄](https://hackmd.io/@eecheng/B16rQ3GjU)
* [2021 年開發紀錄](https://hackmd.io/@WayneLin1992/HkDBmLUDO)
* 執行人: kevinshieh0225 $\to$ [開發紀錄](https://hackmd.io/@Masamaloka/linux2022-vcam)
## `/dev/mem` 研究
編撰 [Linux 核心的 /dev/mem 裝置](https://hackmd.io/@sysprog/linux-mem-device),強化 eBPF, crash 等工具的運用,目標是「成為電腦的主人」 —— 想改哪段記憶體就動手變更
* 相關資訊: [開發紀錄](https://hackmd.io/@jhan1998/Hk61Y4dd_)
* 執行人: vacantron $\to$ [開發紀錄](https://hackmd.io/@vacantron/linux2022-dev_mem)
## 改進 [mimalloc](https://github.com/microsoft/mimalloc)
[mimalloc](https://github.com/microsoft/mimalloc) 是 Microsoft Research 主導的開放原始碼專案,旨在提出更輕量且更有效率的記憶體管理器 (即 malloc/free 等函式) 的實作。
* 相關資訊:
* [Brief History of Free List Sharding](https://hackmd.io/@hPMCWajOS-ORQdEEAQ04-w/HJbeisVNB)
* [IsoAlloc Performance](https://github.com/struct/isoalloc/blob/master/PERFORMANCE.md)
* [2021 年開發紀錄](https://hackmd.io/@hankluo6/mimalloc)
* 執行人: oucs638 $\to$ [開發紀錄](https://hackmd.io/@oucs638/mimalloc)
* 執行人: hankluo6 $\to$ [開發紀錄](https://hackmd.io/@hankluo6/allocator)
## 高效網頁伺服器
探討從無到有打造 Linux 平台的高效能網頁伺服器,涵蓋是否該將伺服器實作於 Linux 核心內部、並行處理、I/O 模型、epoll、Reactor pattern,和 Web 伺服器在事件驅動架構的考量。
* 相關資訊:
* [sysprog21/timeout](https://github.com/sysprog21/timeout): Tickless Hierarchical Timing Wheel
* [2020 年開發紀錄](https://hackmd.io/@jwang0306/final-project) / [GitHub](https://hackmd.io/@jwang0306/sehttpd)
* [2021 年開發紀錄](https://hackmd.io/@XDEv11/sehttpd-project)
* 執行人: blueskyson $\to$ [開發紀錄](https://hackmd.io/@blueskyson/linux2022-final-project)
* 執行人: tommy2234 $\to$ [開發紀錄](https://hackmd.io/@tommy2234/HJgbwqvvc)
## cserv 高效網頁伺服器的分析和改進
[cserv](https://github.com/sysprog21/cserv) 展現 event-driven, non-blocking I/O Multiplexing (主要是 epoll), shared memory, processor affinity, coroutine, context switch, UNIX signal, dynamic linking, circular buffer, hash table, red-black tree, atomic operations 等議題的實際應用
* 相關資訊: [lwan](https://github.com/lpereira/lwan) / [note](https://hackmd.io/@sysprog/HJ76HKYcw)
* 執行人: Xx-oX $\to$ [開發紀錄](https://hackmd.io/@ycwu4142/linux2022-cserv)
## seHTTPd 改進
* 執行人: jim12312321 $\to$ [開發紀錄](https://hackmd.io/@jim12312321/linux2022-sehttpd)
* 執行人: haoyu0970624763 $\to$ [開發紀錄](https://hackmd.io/@HaoYuPeng/seHTTPd)
## kecho 改進
* 執行人: eric88525 $\to$ [開發紀錄](https://hackmd.io/@eric88525/linux2022-ktcp)
## kHTTPd 改進
擴充 [kHTTPd](https://github.com/sysprog21/khttpd),使其具備現代網頁伺服器的經典特色,並運用 Linux 核心的機制,例如使用 RCU 管理 HTTP 連線
* 相關資訊:
* [Tempesta FW](https://github.com/tempesta-tech/tempesta): 在現有的 Linux TCP/IP 堆疊上建構 Web 加速器
* [http-server-rcu](https://github.com/frextrite/http-server-rcu): 以 RCU 管理連線
* [kws](https://github.com/kaiyuanl/kws): 參照其待辦事項
* 執行人: Risheng1128 $\to$ [開發紀錄](https://hackmd.io/@Risheng/linux2022-khttpd)
* 執行人: YiChianLin $\to$ [開發紀錄](https://hackmd.io/@YiChianLin/linux2022-ktcp)
* 執行人: zoanana990 $\to$ [開發紀錄](https://hackmd.io/@zoanana990/linux2022-ktcp)
## ESCA: 針對事件驅動伺服器提出的系統呼叫加速方案
* 相關資訊
* [Effective System Call Aggregation (ESCA)](https://eecheng87.github.io/ESCA/)
* 執行人: yaohwang99 $\to$ [開發紀錄](https://hackmd.io/@yaohwang99/BJgMdmPD9)
## NVIDIA 開放原始碼 GPU 核心模組的研究和改進
NVIDIA 以 GPL/MIT 授權發布針對 Linux 核心的 GPU 模組原始程式碼: [open-gpu-kernel-modules](https://github.com/NVIDIA/open-gpu-kernel-modules)
* 執行人: ccs100203 $\to$ [開發紀錄](https://hackmd.io/@cccccs100203/linux2022-nvidia-open-gpu)
## `simrupt` 研究和改進
[simrupt](https://github.com/sysprog21/simrupt) 專案名稱由 simulate 和 interrupt 二個單字組合而來
* 作用是模擬 [IRQ 事件](https://www.kernel.org/doc/html/latest/core-api/genericirq.html),並展示以下 Linux 核心機制的運用:
- irq
- softirq
- tasklet
- workqueue
- kernel thread
- [kfifo](https://www.kernel.org/doc/htmldocs/kernel-api/kfifo.html)
- [memory barrier](https://www.kernel.org/doc/Documentation/memory-barriers.txt)
* 相關資訊:
* [2021q3 Homework (simrupt)](https://hackmd.io/@linD026/simrupt-vwifi)
* 執行人: Build-A-Moat $\to$ [開發紀錄](https://hackmd.io/@Build-A-Moat/BJasWQhOc#simrupt-%E7%A0%94%E7%A9%B6%E5%92%8C%E6%94%B9%E9%80%B2)
* 執行人: jimmy-liu1021
## 使用 eBPF 實作 [Transparent Proxy](https://en.wikipedia.org/wiki/Proxy_server#Transparent_proxy)
以 [socket-acceleration-with-ebpf](https://github.com/I-mpossible/socket-acceleration-with-ebpf) 為基礎,實作 [Transparent Proxy](https://en.wikipedia.org/wiki/Proxy_server#Transparent_proxy)
* 執行人: shawn5141 $\to$ [開發紀錄](https://hackmd.io/@Shawn5141/2022q1-final-project)
## `kvm-host` 的改進
KVM 可將 Linux 核心轉為 type-2 hypervisor,結合硬體的虛擬化支援,使得 host machine 上可以執行多個獨立的虛擬環境,稱為 guest 或者 virtual machine。由於 KVM 直接提供 CPU 和記憶體的虛擬化,guest os 的 CPU 指令不需要額外經過軟體的 decode,而是直接交給硬體進行處理,因此可以有效的提高運行速度。而結合軟體 (例如 KVM 搭配 QEMU) 模擬 CPU 和記憶體以外的裝置後,guest OS 便可以被完整地支援在 host OS 上載入並執行。[kvm-host](https://github.com/sysprog21/kvm-host) 則是建構在 KVM 基礎上的虛擬機器實作,可載入 Linux 核心和相關應用程式。
* 相關資訊:
* [KVM](https://hackmd.io/@RinHizakura/SJpFJ0mfF)
* 執行人: ray90514 $\to$ [開發紀錄](https://hackmd.io/@ray90514/HyefaHiwc)
## 〈[每位程式開發者都該有的記憶體知識](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)
* 相關資訊
* [現代處理器設計: Cache 原理和實際影響](https://hackmd.io/@sysprog/HkW3Dr1Rb)
* [CPU Cache 原理探討](https://hackmd.io/@drwQtdGASN2n-vt_4poKnw/H1U6NgK3Z)
* [prefetch 背景知識簡略整理](https://hackmd.io/@Rance/Hy3KRm1CG)
* [Random and sequential](https://hackmd.io/@dange/B1J3omXfV)
* 執行人: 2020leon $\to$ [開發紀錄](https://hackmd.io/@6649/linux2022-cpumemory)
* 執行人: happyjack91630 $\to$ [開發紀錄](https://hackmd.io/@happyjack91630/BkYpIXv99)
## 〈Concurrency Primer〉校訂和範例撰寫
檢視〈Concurrency Primer〉草稿並記錄閱讀過程中的疑惑,嘗試用 C11 Atomics 改寫原有程式碼,並確保在 QEMU/Arm 正確運作。
* 執行人: huang-me $\to$ [開發記錄](https://hackmd.io/@huang-me/2022linux_atomic_primer)
## 研讀 Memory Ordering 材料並實驗
研讀 [Linux-Kernel Memory Ordering: Help Arrives At Last!](https://youtu.be/ULFytshTvIY) (錄影要看完![對應的投影片](http://www.rdrop.com/users/paulmck/scalability/paper/LinuxMM.2017.04.08b.Barcamp.pdf)) 和 [Memory barriers in C](https://mariadb.org/wp-content/uploads/2017/11/2017-11-Memory-barriers.pdf),提供對應的解說,並重現實驗 (例如使用 [diy7](http://diy.inria.fr/doc/))
* 相關資訊:
* [I/O ordering 學習紀錄](https://hackmd.io/@butastur/rkkQEGjUN)
* [Experiments on Concurrency - Happens-before](https://hackmd.io/@butastur/concurrency-happens-before)
* 執行人: yyyyuwen $\to$ [開發紀錄](https://hackmd.io/@yyyyuwen/memory_ordering)
* 執行人: ibat10clw $\to$ [開發紀錄](https://hackmd.io/@Cbg1XpL0Rim8U6YOMdjgUg/rJ6NNKdqc)
## [rhashtable](https://elixir.bootlin.com/linux/latest/source/include/linux/rhashtable.h) 研究
Linux 核心提供一套 Resizable, Scalable, Concurrent Hash Table,名為 `rhashtable` (見 [include/linux/rhashtable.h](https://elixir.bootlin.com/linux/latest/source/include/linux/rhashtable.h) 及 [lib/rhashtable.c](https://elixir.bootlin.com/linux/latest/source/lib/rhashtable.c)),描述於論文〈[Resizable, Scalable, Concurrent Hash Tables via Relativistic Programming](https://www.usenix.org/legacy/event/atc11/tech/final_files/Triplett.pdf)〉。摘譯 LWN 文章,並佐以原論文,描述 rhashtable 何以落實高效的並行雜湊表,搭配撰寫 Linux 核心模組作為試驗
* 相關資訊
* [Relativistic hash tables, part 1: Algorithms](https://lwn.net/Articles/612021/)
* [Relativistic hash tables, part 2: Implementation](https://lwn.net/Articles/612100/)
* 執行人: linjohnss $\to$ [開發紀錄](https://hackmd.io/@linjohn/rhashtable)
## 針對 rv32emu 實作 JIT 編譯器
[rv32emu](https://github.com/sysprog21/rv32emu) 是針對 RISC-V 32 位元指令集開發的精簡高效模擬器,本任務是引入 JIT 編譯器,以加速 RV32 指令的執行。
* 執行人: LambertWSJ $\to$ [開發紀錄](https://hackmd.io/@lambert-wu/rv32emu)
## 重做 Fibonacci Device Driver
完成 [fibdrv](https://hackmd.io/@sysprog/linux2022-fibdrv) 指定要求和進行附加事項 (在一對一討論時約定)
* 執行人: ganoliz $\to$ [開發紀錄](https://hackmd.io/@ganoliz/Linux2022q1_HW2)
* 執行人: bebo1010 $\to$ [開發紀錄](https://hackmd.io/@bebo1010/ByS6PKSZc)
* 執行人: Nomad1230 $\to$ [開發紀錄](https://hackmd.io/@Nomad1230/HkUVc3bQq)
* 執行人: Destiny0504 $\to$ [開發紀錄](https://hackmd.io/@QW5_EpRqQlyIyUKTx1F5wA/SylFh5xz5)
* 執行人: scottxxxabc $\to$ [開發紀錄](https://hackmd.io/@scottxxxabc/ryGHdjhW9)
* 執行人: linchi1997yeh $\to$ [開發紀錄](https://hackmd.io/@UAICLsXOS2uhewqjxN1nUA/Hku9WXgG9)
## [sysprog21/bignum](https://github.com/sysprog21/bignum) 的研究和改進
對比 [sysprog21/bignum](https://github.com/sysprog21/bignum) 和自己撰寫的大數運算,同樣在求 Fibonacci 數,分析運算速度、記憶體開銷,和潛在的錯誤,並解釋何以有這些落差。研讀 [sysprog21/bignum](https://github.com/sysprog21/bignum),落實原始程式碼中標注的待做事項。
* 執行人: curlyw819 $\to$ [開發紀錄](https://hackmd.io/@curlyw/SyGqMuK95)
## 實作 Thread package
以[第 10 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz10)給定的程式碼為基礎,實作類似 POSIX Thread 的套件
* 執行人: qwe661234 $\to$ [開發紀錄](https://hackmd.io/@qwe661234/thread_package)
## Concurrent Linked List with Memory Reclamation
實作有效的並行鏈結串列,並整合 Hazard Pointer 和 RCU 作為資源釋放機制
* 執行人: kdnvt $\to$ [開發紀錄](https://hackmd.io/@kdnvt/concurrent-ll-2022)
## Lock-Free Linked List with Lockless Memory Allocation
以[第 11 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz11)第二題的程式碼為基礎,實作有效的並行鏈結串列,並搭配[第 13 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz13)第一題的記憶體管理 (以 mmap 系統呼叫實作) 程式,儘量降低 lock contention。
* 執行人: Korin777 $\to$ [開發紀錄](https://hackmd.io/@Korin777/linux2022-final)
## Lock-free Multiple Producer-Consumer 實作
以[第 9 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz9)第二題和[第 11 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz11)給定的程式碼為基礎,探討 lock-based vs. lock-free Multiple Producer-Consumer 的設計和實作議題
* 執行人: idoleat $\to$ [開發紀錄](https://hackmd.io/@idoleat/lf_mpc)
## Lock-free Ringbuffer 實作
理解 [lfring](https://github.com/sysprog21/concurrent-programs/tree/master/lfring) 並改進該實作
* 執行人: Eddielin0926 $\to$ [開發紀錄](https://hackmd.io/@eddielin0926/lock-free-ring-buffer)
## Lockless Multithreaded Logger 實作
探討 [threaded-logger](https://github.com/sysprog21/threaded-logger) 的實作,分析其中 reader-writer 議題,包含 atomics 和 fute 的使用,思索後續的改進
* 執行人: AmyLin0210 $\to$ [開發紀錄](https://hackmd.io/@AmyLin0210/lockless_multithreaded_logger)
## 改進 quiz1
改進 [第 1 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz1) 並彙整其他學員的成果
* 執行人: ShawnLu31 $\to$ [開發紀錄](https://hackmd.io/@ShawnLu31/linux-2022-quiz1)
## 改進 quiz2
改進 [第 2 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz2) 並彙整其他學員的成果
* 執行人: KJay221 $\to$ [開發紀錄](https://hackmd.io/@KJay/linux2022-quiz2)
## 改進 quiz3
改進 [第 3 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz3) 並彙整其他學員的成果
* 執行人: KatherineHuangg $\to$ [開發紀錄](https://hackmd.io/@_QH1V5HYRWitWQueAZDAjQ/Sk41IxDE5)
## 改進 quiz4 (D)
改進 [第 4 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz4)第四題、彙整其他學員的成果,並且擴充為通用的 coroutine
* 執行人: Wallmountain $\to$ [開發紀錄](https://hackmd.io/@Wallmountain/final_project)
## 改進 quiz5 (B)
完成 [第 5 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz5)第二題的延伸題目,著重於 Hazard Pointer 和 RCU 的比較 (在同一程式碼基礎上,個別實作二者來量化比較效率/特性)
* 相關資訊: [concurrent-programs](https://github.com/sysprog21/concurrent-programs)
* 執行人: sternacht $\to$ [開發紀錄](https://hackmd.io/@sternacht09/ry1fD9C79)
* 執行人: ShienF $\to$ [開發紀錄](https://hackmd.io/@Siensien/B1iubeiF9/edit)
## 改進 quiz6 (A)
改進 [第 6 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz6)第一題 (user-level threads),搭配[第 10 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz10)的實作,打造一套高效率的使用者層級的執行緒函式庫,比照 [uThreads](https://github.com/samanbarghi/uThreads) (及其後繼專案 [libfibre](https://git.uwaterloo.ca/mkarsten/libfibre)) 進行網頁伺服器情境的效能評估
* 執行人: Kevin-Shih $\to$ [開發紀錄](https://hackmd.io/@Kevin-Shih/linux2022q1-quiz6)
## 改進 quiz6 (B)
改進 [第 6 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz6)第二題 (lock-free hashtable)、彙整其他學員的成果,和進行附加事項 (在一對一討論時約定)
* 執行人: linjohn $\to$ [開發紀錄](https://hackmd.io/@linjohn/2022q1-quiz6)
* 執行人: cyrong $\to$ [開發紀錄](https://hackmd.io/@codelelouch0/linux2022-quiz6)
## 改進 quiz8 `(C)`
進行 [第 8 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz8)第三題的延伸問題
* 執行人: cwl0429 $\to$ [開發紀錄](https://hackmd.io/@cwl0429/linux2022-quiz8-3)
## 改進 quiz9 (A)
進行 [第 9 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz9)第一題的延伸問題
* 執行人: yijui $\to$ [開發紀錄](https://hackmd.io/@ZV4RbasfSyaHqlLqX3LQ8g/Hkx58XCu5)
## 改進 quiz12 (B)
進行 [第 12 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz12)第二題的延伸問題。過程中參照[第 13 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz13)第一/二題,嘗試開發出高效的 ring buffer。
* 相關資訊:
* [ringbuffer 報告](https://hackmd.io/@1az9eaZgQwG38Qx2YiKXDw/rkeJGSwRN)
* [Super Fast Circular Ring Buffer Using Virtual Memory trick](https://abhinavag.medium.com/a-fast-circular-ring-buffer-4d102ef4d4a3)
* [Using black magic to make a fast circular buffer](https://lo.calho.st/posts/black-magic-buffer/)
* [linear_ringbuffer/include/bev/linear_ringbuffer.hpp](https://github.com/lava/linear_ringbuffer/blob/master/include/bev/linear_ringbuffer.hpp)
* [wuffs/script/mmap-ring-buffer.c](https://github.com/google/wuffs/blob/main/script/mmap-ring-buffer.c)
* 執行人: StevenChou499 $\to$ [開發紀錄](https://hackmd.io/@StevenChou43/SJ20SNUP5)
## 改進 quiz14 (B)
延展 [第 14 週測驗題](https://hackmd.io/@sysprog/linux2022-quiz14)第二題的封包捕捉程式 (使用 [Packet MMAP](https://docs.kernel.org/networking/packet_mmap.html)),使其具備類似 [Packet Sniffer](https://github.com/arunppsg/packet-sniffer) 的功能
* 執行人: a12345645 $\to$ [開發紀錄](https://hackmd.io/@SRepqiofRCqX0QTL2aUCvA/linux2022-quiz2)
## 重作 lab0
改進並彙整其他學員的成果
* 執行人: Eric-liau $\to$ [開發紀錄](https://hackmd.io/@ericliau/BkygWR7eq)
* 執行人: HScallop $\to$ [開發紀錄](https://hackmd.io/@HScallop/ryDiVhSx9)
* 執行人: jj97181818 $\to$ [開發紀錄](https://hackmd.io/@jj97181818/linux2022-lab0)
* 執行人: kaiweike $\to$ [開發紀錄](https://hackmd.io/@kaiweike/linux2022-lab0)
* 執行人: raysun0729