版本 83d0b651ad05235c5a37400961d5c6c1112b175e
aa860630 (魏泳禎)
2024 Linux 核心設計 春季班 自我評量
成果發表與貢獻
閱讀文件時做的錯字修訂:
作業與隨堂測驗
-
針對佇列作指定的操作,實作出 q_sort 再與 list_sort 做效能上的評估與比較
Integration: HackMD
閱讀〈Linux 核心模組運作原理〉並對照 Linux 核心原始程式碼 (v6.1+),閱讀《The Linux Kernel Module Programming Guide》(LKMPG) 並解釋 simrupt 程式碼裡頭的 mutex lock 的使用方式
Assessment: HackMD
閱讀〈因為自動飲料機而延畢的那一年〉後的心得,研讀 CS:APP 3/e 第一章、第二章並對前期作業進行改進
quiz1 + 2: HackMD 探討 Quick sort 的儲存效能與其時間複雜度、Timsort 各個函式及 Timsort 的穩定性;針對 hash table 結構,討論 DFS 演算法過程與其程式碼
quiz3 + 4: HackMD 主要針對 bitwise 的操作,內容包含如何有效找到最高位元、利用加法與乘法來取代除法、及 Exponentially Weighted Moving Average 的實際操作,其中提到 GCC 提供一系列的 built-in 函數用來優化編譯結果
期末專題
使用核心模組以過濾廣告,透過解析 TCP 與 UDP 協定的方式找到網路封包包含的有效訊息,並與 iptable 施行比對後決定是否允許封包通過,將含有廣告訊息的封包丟棄
與授課教師的互動
一對一討論:5月 20日 (星期一)⋅下午7:30 - 8:00
問題一: 在二的補數乘法應用中,討論到乘法溢位造成的安全漏洞,乘法溢位可能造成資料結構被破壞或者程式崩潰,還有哪些問題嚴重到可以被稱之為安全漏洞,抑或是上述問題可以如何被拿來惡意操作?
問題二: 在 bitwise 操作中,可以透過建立 LUT 來加速 RGB 轉為灰階的運算,方法不同可能產生哪些差別?
問題三: 在 RGBA 轉為灰階的操作中,為何透明度 alpha 不與 RGB 一樣建立表格?
修課心得
與指導教授的學習回顧
二月回顧:3月7日 週四 下午7:15
- 了解「Linux 核心實作」的作業對於程式碼品質、執行效率、記憶體使用率,還有各式「品味」(good taste,呼應 Linus Torvalds 在 TED 訪談的用語) 的重視
- 閱讀 Linux 核心關於 linked list, hash table,以及 bitops 相關的原始程式碼,並試圖撰寫程式碼來使用 Linux 核心提供的 API
三月回顧:4月8日 週一 下午9:50
- Bitwise Operation 在程式上可以讓許多運算節省效能
- 影響 list sort、merge sort 跟 tim sort 的因素很多,包括資料、穩定度等
- 學習到工程師追求更精準、更有效率的精神
自我評量
\((4 \times 9 \times 9 \times 7 \times 9 \times 7) ^ {1/6} = 7.23\)
使用方案 B 計分:\(1 + floor(7.23) = 8\)