版本 8baa1272d6761e8b7f2ce09bde70191aa351c063
rickywu0421 (吳恩緯)
簡介
國立成功大學 資訊工程學系 111 級 (2018 ~ 2023)
GitHub:
rickywu0421
2022 Linux 核心設計 自我評量
期末專題 - vwifi
修課心得
久聞 Jserv 老師的大名很久了, 今年大四覺得自己有能力來挑戰這堂課了 (我錯了, 以前學的東西都不夠扎實)。結果第一堂課 (教 linked list) 上完才發現原來我在大二的時候學的資料結構根本不夠拿來用在真正的軟體世界 (不只作業系統), 並且我也大開眼界, 原來 Linux kernel 中的 linked list 可以讓 C 語言做到類似泛型的設計 (當然, Jserv 老師也常常提到物件導向是思維而不是語法)。老師每個禮拜的測驗題都非常有難度, 並且可以做非常多的延伸探討, 其中我最喜歡的主題是 bitwise 操作:原來程式還可以這樣寫!很多奇技淫巧, 但絕對不是花拳繡腿, 而是可以達成效能上的提升, 甚至是 branchless。
這門課中期我看到 Jserv 老師在 FB 系統軟體社團 PO 出 vwifi 這個專案, 一直以來都很喜歡電腦網路通訊的我立馬眼睛就亮起來了, 因為之前接觸的 socket programming 其實只是 user 與 kernel 之間的 interface, 而 vwifi 介於 kernel 與硬體之間, 雖然已經位於 protocol stack 之下, 但仍須 protocol stack 的知識。在研究了幾個禮拜後我開始了第一次 PR, 而這也是我的人生中的第一次 PR, 儘管只是修復小小的 bug, 但被 merge 的時候我真的相當有成就感。之後我也陸續提交了一些 PR, 並很榮幸成為了這個專案程式碼貢獻行數最多的人 (儘管只有 1000 出頭行, 但讀過的 kernel 程式碼卻是幾千幾萬倍的), 並作為 reviewwer review 大神們寫的 code。這個專案不僅讓我學到很多網路 (多半界在 data linked layer) 的知識, 讀了超級大量的 kernel driver 程式碼 (ath6kl, Broadcom FullMAC), 更重要的是讓我學到開源專案是如何進行的。
能修到 Jserv 老師的這門課是我的榮幸, 第一堂課的 “誠實面對自己” 一直沿用到了學期末, 直到現在我還甚是愧咎我自己不夠強。我第一次覺得一個學期怎麼那麼短, 相信這是因為這門課的充實以及帶給我的成就感造成的結果吧, 真的恨不得再加 18 週呢!
自我評量 (50)
我給自己 49 分, 我投入了相當多的時間, 雖然很多測驗都沒有完成 (真的恨時間不夠多啊…), 但總體上學到了非常多, 其中最重要的是 “誠實面對自己”, “知之為知之, 不知為不知, 是知也”, 若不知, 就去看規格書吧!