分享到plurk 分享到twitter 分享到facebook

User/idoleat

簡介

  • 國立交通大學 土木工程學系 109 級,雙主修資訊工程學系資工組 (2016 ~ 2021)
  • 國立成功大學 資訊工程所 112 級 (2021~2023+)
  • GitHub: idoleat
  • HackMD: idoleat

成果發表

CCNS 定期聚 — Steam 的掌上遊戲機都裝 Linux 了,你的電腦也該裝了吧

Linux 核心相關專案貢獻

null

2022 Linux 核心設計 春季班 自我評量

作業共筆

lab0

測驗共筆

quiz5/6

期末專題

Lock-free Multiple Producer-Consumer 實作比較與相關議題探討 HackMD / GitHub

修課心得

從開學的被車禍骨折、感情問題到期末的親人變故,這門課一直都是支撐我維持正常生活的動力來源。還有很多問題需要我們去解決,需要培養足夠的能力及基本素養填補地上的坑洞。雖然老師一直說不要跟別人比較,其他同學的優秀成果也是讓我持續前進的動力。特別是每週的填空小考,其實就很像一種快篩,篩出來的結果是能力不足,檢驗效果良好。每個禮拜來照照鏡子,看看自己到底有多爛,希望之後可以繼續維持填空題,我需要空格嘲笑我的腦袋就跟他一樣空空的。從每週充實的教材、小考到為了課程編寫的教科書,面對龐大的世界深感自身不足,況且老師都花如此多的心力勞力,看到自己依舊能力不足實在愧對納稅人。事實上每次上課討論我也想拿我的東西出來討論但是成果都太簡陋,有很多地方是因為對相關知識掌握度不夠而不是真的需要討論,愧為碩士生。

不過與之前的自己相比,對於 C 語言的掌握度終於有所提昇,例如指標的使用、巨集、binary operation 等,也對編譯器的行為有更多的認識。掌握 C 語言就像解鎖封印,釋放整台電腦該有的能力,畢竟 C 語言與整個作業系統及硬體是一體兩面,寫 C 就是從軟體的角度與硬體互動。個人私心覺得計概課就該以此角度介紹電腦科學,再左以理論及更高階的工具及觀念。

學習系統軟體就像是開啟了上帝視角,大學時聽到吳凱強教授說學好 OS 絕對對整個職涯都會有很大的幫助,現在慢慢懂了。看事情的角度不一樣之後想法也會不一樣,例如知道如何善用作業系統提供的資源和功能,還有執行時期需要注意的開銷等。再搭配老師的引導慢慢領悟到資深工程師的思維。

老師上課時不時就提及政治議題,因為作業系統中本身就充滿政治議題,管理行程是政治問題,要協調多核多執行緒正確無誤有效率的工作就像協調組員一解決問題是政治問題,整個作業系統發展史也充滿了政治問題(通情達理有助於學習作業系統)。

我覺得老師所撰寫《concurrency primer》一書可以加入更多效率不佳或是連正確性都有問題的程式範例來彰顯為何我們在處理 concurrency 的問題需要考慮到如此多的議題。有些問題不見得有最好的答案,但是一定有錯誤答案可以去避免,一如 《C Traps and Pitfalls》 的存在。在多核硬體普及的當下,我認為 concurrency 的探討應要更為普及,不過在這之前「很多人一起做事」的議題要先自己想過一遍比較好,畢竟邏輯與思維上與「一個人自己做事」的美麗小花園是不一樣,需要讓自己習慣多工環境,不然就算直接讓別人告訴你概念或答案很有機會聽不懂或是不知道為什麼要這麼做。

《Demystifying the Linux CPU Scheduler》只有第一章的部份有詳讀,但是我覺得這可以提供讀者對 Linux kernel 有足夠的認識,要作為一般科普教材也是可以的。

自我評量

6/10 我沒有確切計算我花多少時間在這門課上,但是把能排除的干擾因素都排除後,剩下的時間都留給了這門課。不過比較可惜的是在學期都快過了一半才穩定下來的情況下進度落後不少,很多時候會需要回頭補強基礎才得以繼續進行,導致整體產出鬆鬆散散,遠不及認真投入一整個學期的該有的份量。整體學習步調也有待調整,光用投入時間來衡量是不準的,投入了大量時間卻沒有相對應的產出只能說明效益低落。相比修完這門課該有的能力,感覺我不配拿到今年的課程修業證書吧。