版本 ea4a9cfd6978e81d499ad332f5659542f75758bc
Changes from beginning to ea4a9cfd6978e81d499ad332f5659542f75758bc
---
title: TonyLinX (林儀承)
categories: User
...
## 簡介
* 國立成功大學—資訊工程研究所
* [GitHub](https://github.com/TonyLinX)
* [HackMD](https://hackmd.io/@TonyLinX)
## 2025 Linux 核心設計 自我評量
### 1.成果發表和貢獻:
### 2.作業/隨堂測驗:
[HW1](https://hackmd.io/@TonyLinX/linux2025-homework1)
[HW2](https://hackmd.io/@TonyLinX/HyFvWXH3yl)
[HW5](https://hackmd.io/@TonyLinX/linux2025-homework5)
* 透過第一個作業,我重新學習 C 語言,從完全忘記 linklist 怎麼寫,到實作出 linux 風格的 linklist。
* 透過第二個作業,我學習到,單向鏈結到 BST、Quicksort、bit 算法、hash table。
評分 : 1 分
### 3.期末專題
[Linux 核心專題: 並行程式設計相關測驗題](https://hackmd.io/@sysprog/r1DpeNNVex)
從這次的矩陣運算多執行緒實作過程中,我深刻體會到高效能運算背後的系統設計與調度技巧。在一開始,我只具備基本的 C 語言能力,對 thread pool、work stealing、thread affinity 等概念幾乎是陌生的,但透過實作這個專題,我不只是完成了平行化矩陣乘法,還一步步將系統從 naïve 的單執行緒版本,優化成具備 lock-free 結構與 batch stealing 策略的高效 thread pool。這中間我學會了如何使用 ring buffer 來實作每個 worker 的工作佇列;也學到如何在無鎖情況下透過原子操作(atomic operations)達成安全的工作共享與分配,進而提升整體執行效率。除此之外,我也親自體會到從 busy-wait 到 semaphore 的設計轉變,如何在 spin 與 sleep 之間取得效能與資源利用的平衡。整體而言,這次的專題不僅強化了我對平行程式設計的實作能力,也讓我在除錯、效能分析、系統資源分配上建立了更扎實的理解,讓我從一開始幾乎不了解 thread pool,到能夠自己設計一套具有 work stealing 的平行任務排程系統,是一次很具成長性的經驗。
評分 : 2 分
### 4.與授課老師的互動
一對一面談:
1. 2025 年 5 月 29 日
這是本學期第一次面談,主要是討論自己的學習情況,老師也給了我一個測驗題,要 "如何在沒有FPU的情況下計算幾何平均" 。當時的我不知道什麼是定點數,也不知道如何求近似值。在後續,回家研讀先關的教材後,我學習到了定點數以及牛頓法。
2. 2025 年 6 月 9 日
這是本學期第二次面談,我當時完成了老師提出的測驗題,但被說沒有討論 overflow 的問題,後續我改了設計方式,從先計算出最後的乘積 (product),再去做牛頓法開 n 次方根,改成分成 P \times 2^{E},這樣就可以控制使否落在範圍內,這樣的設計不僅克服了 overflow ,還可以使誤差率都可壓在1%以下。
3. 2025 年 6 月 18 日
這是本學期第三次面談,這次主要是討論我的期末專題的主題,由於我對並行程式有興趣,所以老師派發給我關於並行程式的專題。
評分 : 2 分
### 5.所見所聞所感,務必提及閱讀〈因為自動飲料機而延畢的那一年〉和回顧自身在本課程的投入狀況
從這個故事中,我學到了一件非常重要的事——知識就是力量。光有熱情與努力,並不足以讓事情真正推動起來。這個故事也讓我回想起大學時,和朋友們一起進行的各種計畫。那時候,我們常因為不熟悉其他領域的知識,導致許多問題處理起來格外吃力。久而久之,這些困難逐漸消磨了大家的熱情,最終許多計畫都不了了之。
回顧這堂課的學習歷程,我投入最多心力的是期末專題。在設計整個 lock-free thread pool 架構時,我深刻體會到:若想真正解決一個系統層級的問題,僅有直覺遠遠不夠,必須建立在充分的知識理解與實驗驗證之上。一開始我對於多執行緒相關的概念如 mutex lock、semaphore、thread pool、甚至 work stealing 幾乎完全陌生,面對問題時無從下手。但透過仔細研讀老師提供的並行程式設計教材、逐步實作、搭配對執行結果的觀察與分析,我才逐漸建立起這些機制背後的邏輯與使用時機。設計過程中,我也不斷面對新的挑戰:例如資料競爭、負載不均等問題,這些都驅使我學會使用 atomic operation、設計 ring buffer 以實現 lock-free 結構,並嘗試引入 batch stealing 來減少高頻率的 steal cost。此外,我也學會如何進行效能分析,包含以 perf stat 測量 cache miss 與 context switch 數量,來佐證我所提出的設計是否真的達到效能提升。每次的修改與驗證都是一次新的學習,也讓我認知到在多執行緒環境下,正確性與效能之間的平衡極為關鍵。這堂課不只是讓我補足了過去對系統程式設計的理解盲點,更讓我第一次真正感受到「設計一個能動的系統」背後所需的細節與思維深度。
評分 : 2 分