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

MathewSu-001 (蘇晃)

簡介

2024 Linux 核心實作 春季班 自我評量

第一項、成果發表和貢獻

我選擇給自己 1 分

沒有做出任何貢獻,所以給自己最低分。

第二項、作業/隨堂測驗

我選擇給自己 7 分

達成的作業要求: 著手修改 queue.[ch] 和連帶的檔案,並滿足 make test 自動評分系統的所有項目,和在 qtest 提供新的命令 shuffle,並以統計的原理來分析我最後的成果,探究洗牌的「亂度」。在這次的作業中,學習到如何 git 的各種操作 ,並且對於 Doubly linked list的操作有更進一步瞭解,以及如何將之前在機率與統計中學到的知識套用進自己的程式碼裡。

達成的作業要求: 重新回答第 1 周測驗題和第 2 周測驗題,並且學習到如何利用 perf 來進行 Linux 的效能分析。

達成的作業要求: 分析 Linux 核心的 lib/list_sort.c 實作並評估其效益,和將 ttt 整合進 lab0 中: 修改 qtest 程式,使其新增 ttt 命令及確保使用定點數來取代原本 jserv/ttt 的浮點數運算、允許使用者切換「人 vs.電腦」或「電腦 vs. 電腦」的對弈。在這次作業中學到 MCTS 演算法。

達成的作業要求: 僅完成重新回答第 3 周測驗題。

達成的作業要求: 閱讀 因為自動飲料機而延畢的那一年,與選定想做的期末專題。

  • Homework 6 達成的作業要求: 閱讀〈Linux 核心模組運作原理〉與 《The Linux Kernel Module Programming Guide》 紀錄和學習 kernal module 的使用和範例到第 13 章。此外,選定作業主題二: 整合井字遊戲對弈,不過如無頭蒼蠅般僅僅瞭解 simrupt.c 的運作流程,並且整合 ttt 進核心模組當中,核心模組當中,沒有做出其他的改良。

第三項、期末專題

我選擇給自己 6 分

  • Linux 核心專題: 並行程式設計 感謝老師仍然願意給我期末專題做,我現在的進度做到理解並實作搶佔式多工。透過利用正確的方式閱讀第一手教材,並且觀看老師的影片,理解到何謂並行設計與 setjmp, longjmp 對於排程的重要性。我會做期末專題到 7/7 中午截止日前。

第四項、與授課教師的互動

我選擇給自己 9 分

與老師在 7/1 下午 14:00 進行一對一面談,感謝老師罵醒了總是自作聰明的我。在面談時,我無法正確地講出 CMWQ 的運作流程,甚至連 processor core 的音都可以聽錯,因此指派我研讀並行程式設計教材,且務必動手確認。此外,老師也有在當下要我 debug 出為何我在做定點數開根號運算時,只要輸入超過 2 的 16 次冪,最後的輸出結果就會出錯,最後我失敗了。因此老師指派給我的第二個 TODO 為: 針對定點數開平方根程式碼 (fixed_sqrt),提出其有效輸入的最大值並檢驗。

第五項、 所見所聞所感

我選擇給自己 9 分

閱讀〈因為自動飲料機而延畢的那一年〉後,很喜歡文章作者的一段話:只有把東西生出來做實驗,你才會知道該如何改進。不過在這邊我想要再補充的是,前提為需將所有細節都考慮進去,閱讀完相關領域的教材後,才可以設計實驗、驗證假設並做出改進。我在這門課花費的心思占了七成的時間,除了要完成指導教授規定的計劃外,都把時間投注在作業上,只有在一開始時將老師指定的影片看完,到了後面我不斷地去觀看別人的開發紀錄,然後對自己的程式碼做出改進,謝謝老師在最後將我點醒,及時回歸正途,做正確的事。

第六項、每月發給實驗室指導教授的學習回顧

我選擇給自己 5 分

這學期我並沒有寄任何一封信給指導教授,因為老師並不準他的學生修多餘課程,認為會拖累計畫的進度。不果我真的很慶幸自己有修這門課,這對我在寫程式的態度尚有很大的轉變,我不再只是去 “完成” 他而已,而是去思考更高的層面,像是效能、時間成本等工程師應該要會的事。

自我總評量得分

自我總評量我給自己 6 分。

選擇方案 B 的計算方式 $1+floor(GeoMean) =1+ (1 \(\times\) 7 \(\times\) 6 \(\times\) 9 \(\times\) 9 \(\times\) 5)\(^{1/6}\) = 1 + floor(5.07) = 6$