--- title: chiangkd (江坤諦) categories: User ... # 簡介 * 國立中央大學 機械工程學系 110 級 (2017-2021) * 國立成功大學 機械工程研究所 (2021 ~) * GitHub: [`chiangkd`](https://github.com/chiangkd) # 2023 Linux 核心實作 春季班 自我評量 ## 作業 * lab0-c: [Hackmd](https://hackmd.io/@chiangkd/2023spring-lab0-c)/[Github](https://github.com/chiangkd/lab0-c) * fibdrv: [Hackmd](https://hackmd.io/@chiangkd/2023spring-fibdrv)/[Github](https://github.com/chiangkd/fibdrv) ## 隨堂測驗 * quiz1: [Hackmd](https://hackmd.io/@chiangkd/2023quiz1)/[Github](https://github.com/chiangkd/NCKU-Linux-Kernel-Quiz/tree/master/2023/quiz1) * quiz2: [Hackmd](https://hackmd.io/@chiangkd/2023quiz2)/[Github](https://github.com/chiangkd/NCKU-Linux-Kernel-Quiz/tree/master/2023/quiz2) * quiz3: [Hackmd](https://hackmd.io/@chiangkd/2023quiz3)/[Github](https://github.com/chiangkd/NCKU-Linux-Kernel-Quiz/tree/master/2023/quiz3) * quiz4: [Hackmd](https://hackmd.io/@chiangkd/2023quiz4)/[Github](https://github.com/chiangkd/NCKU-Linux-Kernel-Quiz/tree/master/2023/quiz4) ## 1 對 1 討論時間 ### 2023年3月29日 (週三) 下午9點 - 下午9:30 1. commit message 寫的很差,例如在實作 fast doubling 後應該 commit message 提及其效益 2. `__copy_to_user` 執行時間並不是嚴格的線性關係 (cache miss, page fault) 3. (fibdrv)嘗試使用 hash table 保存已計算過得 Fibonacci 數 4. 問了關於為何不該在虛擬機器進行實驗的問題,`perf` 會去呼叫 PMU (共用硬體下的時間量測沒有參考價值),在效能分析中的間接記憶體存取 (type-2 hypervisor) 會大幅影響效能只是其中一個問題 ### 2023年5月5日 (週五) 下午10點 - 下午10:30 1. commit message 還是很差,善用 `git rebase` 進行修正並詳閱 [How to Write a Git Commit Message](https://cbea.ms/git-commit/) 2. 期末專題指派 (rhashtable) ## 期末專題 * rhashtable 研究和應用: [Hackmd](https://hackmd.io/@sysprog/HkKKE5eB3)/[Github](https://github.com/chiangkd/rcuhashbash) ### 所見所聞所感 在進入碩士之前的我完全就是自以為自己會寫程式,進入碩士之後發現差得遠,甚至應該要說自己是完全不會寫程式,在碩二時修計算機結構更大的認識到自己真的爛到爆,而 Linux 核心設計課程又再次讓我認識到這一點,光是第一週的 lab0-c 在動手之前就花費了非常大量的時間在讀書上 (儘管在去年已經有嘗試自己做過練習),第二週開始海量的教材已經讓我不知道該讀哪些東西,在撰寫 fibdrv 時,《Linux Kernel Module Programming Guide》幫了我很多,從一開始連帶有 `__init` 及 `__exit` 運作流程都不知道就開始嘗試編譯並掛載核心模組,所以在這過程中當然讓電腦壞掉很多次,回頭看文獻發現自己根本就是在瞎忙亂 try,動手之前根本就沒有好好閱讀文獻或者資料,在課程中花費最多時間的是在 fibdrv 作業中,第一次面談過後老師拋出一個 "可以試著用 hashtable 紀錄已計算過的值",雖然最後成果並不算顯著,但在這過程中真的認知到自己很多地方都是在不懂裝懂 (隨著課程推進已經早早放棄追逐進度,決定回頭解決不懂裝懂的部份) ### 自我評量 我給自己 7 分 秉持著跟自己比的原則,我願意給我自己一個及格分數,在這門課中我能更誠實的面對自己真的爛的這件事實,在首份 lab0-c 作業最讓我印象深刻的不僅是超長的作業說明,還有一堆 CI/CD 驗證流程,有時候程式編譯的過反而會讓我很緊張,跳出一堆 warning 或 error 反而才能讓我知道我的問題點,最怕的就是執行時發生了非預期的運行流程,讓我不知道從何改起,而進到 fibdrv 作業時這個體悟更加深刻,編譯過了,一掛載電腦就死機,卸載的時候記憶體沒清理乾淨,重複執行掛載卸載點腦也遲早會死機,如何透過工具或是其他方法來驗證自己的程式就顯得非常重要,也讓我認識到我太小看資訊科技這個領域了。 題外話,在本學期中實在是有諸多庶務纏身,導致自己的時間分配上有非常大的問題,這不見得是熬夜可以解決的,有時候熬夜瞎忙只是為了欺騙自己有在認真,如何在有限的人生中做出一點點貢獻,我想這也是我必須持續學習的一個課題,但在這之中讓我感覺到自己最大的改變就是一個愛打遊戲的我本學期基本上完全沒有打遊戲,不見得一定是在努力讀書,但至少我相信我自己虛度光陰的時間變少了。