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

版本 ab296476276ad8480166b7617260fd285a782ac1

Korin777 (歐禮寬)

簡介

  • 國立成功大學 資訊工程學系 111 級 (2018 ~ 2022)

  • 國立成功大學 資訊工程所 113 級 (2022 ~)

  • GitHub: Korin777

  • HackMD: Korin777

成果發表

Linux 核心和相關專案貢獻

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

作業共筆

測驗共筆

期末專題

  • Lock-Free Linked List with Lockless Memory Allocation: GitHub / HackMD

修課心得

這堂課讓我了解到自己的基礎有多麼地不扎實,明明修過了作業系統及平行程式設計,卻在這門課中才真正地透過 atomic 操作來實作多執行緒程式,明明修過了資料結構卻在課堂上被問到紅黑樹時不知如何回答。

這堂課所學當中,最有心得的就是 lockfree linked list、hazard pointer 跟 address sanitizer,常在期末專題透過 address sanitizer 來找出 memory leak、use after free 等議題,並思考自己 linked list 對應的解決方案。

最後,在這門課中同學的筆記都是公開的,當我在做作業或測驗題遇到困難時,常會去參考同學的筆記,學習它們是如思考或透過實驗來分析這些問題,我覺得這是其他課程都沒看過的,我自己非常喜歡這點!

自我評量 (1 ~ 10)

我給自己 7 分

我覺得自己應該要花更多的時間在這門課上,不管是研讀 CS:APP、課程教材中的延伸教材,抑或是 quiz 中的延伸問題,期末專題尚未去研究 madvise 及 mmap-benchmark 專案,接下來的暑假中會嘗試去研讀它!

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

作業共筆

測驗共筆

期末專題

修課心得

這是我第二次在這門課學習,在課程的作業及隨堂測驗中還是獲得許多新的啟發,像是 lab0 的 mergesort 去年用 buttom up 的方法實作時會因為 linked list 無法像陣列那樣直接取得某個位置的值,導致效能較差,今年再回頭看時發現可以透過 prev 連到下一個要 merge 來解決上述問題,還有像是去年專題有研究如何實作記憶體配置器,最後是簡單用陣列去儲存不同大小的 memory block,而 quiz5 中則是透過紅黑數去儲存,並且還能 merge 相鄰的 block ,讓我了解到如和去實作一個更通用的記憶體配置器。

因為自動飲料機而延畢的那一年讀後感想 : 讀完後非常佩服這些人的熱情及勇於挑戰的精神來一步一步的解決問題,就像老師常說的:「就是在學生階段,才更因該去挑戰困難的問題」,而文章中也有提到很多解決辦法都是權衡之下的取捨,如果一昧的去求最佳的解決辦法,到最後反而只會讓自己毫無進展。最後我非常欣賞筆者在面對不同的人(不同科系的同學、工廠老闆、飲料店老闆、彈簧工匠等等)都能夠互相交流學習的這種特質,得好好強迫自己去學習。

自我評量 (1 ~ 10)

我給我自己 8 分

相較於上一次修課,我認為自己這次又學到了更多,因此幫自己多加 1 分,而這學期專題關注在 userspace RCU 實作,第一次看完 urcu 相關文件及他人的筆記後還是不清楚為何要設計不同的flavor,後來在深入的追縱程式碼及對照看 URCU 的論文、第一手材料、github commit 及 lttng-dev 上的相關討論後,總算對它的實作差異及考量有更深入的認知,只要肯花時間學習,一定會有所收穫的!