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

版本 fc3e21ba273c7a36e0cef737b7713ba2cd1924c2

User/Nsly0204

Changes from beginning to fc3e21ba273c7a36e0cef737b7713ba2cd1924c2

---
title: Nsly0204(李岱融)
categories: User
...

# 簡介
* 國立成功大學 電腦與通信工程研究所 113 級
* GitHub: [`Nsly0204`](https://github.com/Nsly0204)
* HackMD: [`Nsly0204`](https://hackmd.io/@Nsly0204)

# 2025 Linux 核心設計 春季班 自我評量
## 成果發表和貢獻

4分。

在開源專案上沒有貢獻,此外雖然授課教師一再強調並要求學員專注細節,但在閱讀教材上,自認為與別人細心程度仍有差距,給予 4 分自評。

* 修正教材 <從 √2 的存在談開平方根的快速運算> 錯誤。
[Linux 核心設計: 中斷處理和現代架構考量](https://hackmd.io/DaSMrw3dRfqwLFq36fAwww?view)。

* workqueu -> workqueue


## 作業/隨堂測驗
9分。

課程中我從接近 0 基礎開始接觸 C 語言,homework1 中熟悉了指標,和 linux 核心風格的鏈結串列。homework2 實作所有問題的基本要求,涵蓋鏈結串列、二元搜索樹、雜湊表等資料結構外,也有對不使用 FPU 的整數開根號的探討。homework3 了解使用者空間和核心空間如何交流,透過 sysfs 和 ioctrl 實作 AI 對戰並顯示紀錄,進一步探討核心中斷機制和中斷後半部分處理中 workqueue 與 tasklet 的差別,透過探索核心程式碼來了解現代三層 CMWQ 架構如何保證 cpu affinity。

* [2025q1 Homework1 (lab0)](https://hackmd.io/@Nsly0204/linux2025-homework1)
* [2025q1 Homework2 (quiz1+2)](https://hackmd.io/@Nsly0204/linux2025-homework2)
* [2025q1 Homework3 (kxo)](https://hackmd.io/@Nsly0204/linux2025-homework3)
* [2025q1 Homework5 (assessment)](https://hackmd.io/@Nsly0204/linux2025-homework5)



## 期末專題
7分。

* [一對一問答紀錄:從整數平方根到浮點數開平方根。](https://hackmd.io/@Nsly0204/rJ3eXhWWxl)
* [重做 homework3](https://hackmd.io/@Nsly0204/HyZPXlJNxg)

在一對一討論時被問到如何實作不用 FPU 的浮點數開平方根,原本以為自己理解 IEE 754 的概念,如果結合作業二中整數開平方根的經驗應該可以做出來,事實是的到實作上才發現很多之前沒有想過的問題發生,如規範中小數點如何四捨五入,初步寫完程式基礎邏輯後,如何利用位元運算改進等等。後續追蹤中,我從整數開平方根下手,透過數學估計與極限了解了固定迭代牛頓法的邏輯,並發現能與浮點數開根號中的牛頓法產生對應,並分別以倒數平方根+牛頓法和逐為逼近法兩中方法完成實作。完成這部分後的討論中,被要求重做作業三,我透過sysfs 時做對弈紀錄後,我被教授詢問作業進度,發現我對核心的中斷機制只留在「舉燭」的階段,於是我翻閱核心程式碼,了解 CMWQ 是如何使 AI 模組保證在不同 cpu 上運行並記錄。

## 與授課教師的互動

8分。

* 第十二週:5/12
    * [線上討論](https://docs.google.com/document/d/1CYiCCgqXphgxQKRic7Ec82kC8gj8c12DRE8l9xsecEk/edit?tab=t.0#heading=h.4102ixyukflk)
    * 停止對於理論的幻想,誠實面對自己,討論浮點數開平方根不使用 FPU 的實作。
* 第十五週:5/28
    * [線上討論](https://docs.google.com/document/d/1CYiCCgqXphgxQKRic7Ec82kC8gj8c12DRE8l9xsecEk/edit?tab=t.0#heading=h.4102ixyukflk)
    * 討論並行處理的教材內容後,發現自己對 linux 核心的思考都停留在教材和舉燭,重做作業三以了解核心中斷機制。
* 第十七週:6/17
    * [2025-06-10/17/24 問答簡記](https://hackmd.io/4UVPLWFgQ92AlG3N76dFKA)
    * 問題 : 以 CPU 排程器來說,如何確保特定 wq 上的任務是 bound-to-one-CPU。
* 第十八周:6/24
    * [2025-06-10/17/24 問答簡記](https://hackmd.io/4UVPLWFgQ92AlG3N76dFKA) 
    * 問題 : 為何 free() 使用時不用加容量?
    * 記憶體配置器為何需要 reuse 函式,實作。

## 所見所聞所感
10分。

* 回顧自身在本課程的投入狀況

當初連 C 語言都不熟悉就抱持著打開眼界的心態來到這門課,而這門課更是超越了我的想像。以我自認為的努力程度、增廣的見聞、和已經剩下不多自評分數來說,我給自己 10 分。這門課由淺入深,前六週的課程穰我理解大學一二年級學到的程式設計和電腦科學相關知識究竟如何被用於解決問題,除此之外強調了每一行程式碼背後數學的重要,我學會不再止於程式碼的正確性,而是利用效能分析工具去親眼見證理論的結果。中間六周的課程,我學會誠實面對自己,老師所說的整理現有資料不算是學習在一對伊討論的時候得到了體現,我也學會嘗試利用程式觀察教材中的結論。最後六周的課程開始接觸 linux 核心,發現了自己仍然沒有程式面對自己,老師說的沒有成果努力不算努力現在仍刻在我的心眼上,反思自己最後六周確實花費相當的時間投入,但實際實現的功能卻只有一點點,老師的話屬實是當頭棒喝,並思考自己努力的領域是否是吃飯會用到努力。

從頭回顧自己在這堂課的成果,或許仍然不到翻身的程度,但我學到面對問題,並設計實驗驗證的勇氣,就算我在幾乎沒有關係的通訊領域,也從中獲得啟發謝謝教授與同學的督導,期許自己之後持續誠實面對自己。


## 自我評量 (1 ~ 10):
$GEOMEAN = ( 4 \times 9 \times 7 \times 8 \times 10 )^{1/5} = 7.25$

方案 A :
方案 B :$1 + floor(GEOMEAN) = 1 + 7 = 8$ 選擇此方案。