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

版本 b6b81f5a866f203e0690dcc8f0ba148b8abf0d35

User/Wufangni

Changes from b6b81f5a866f203e0690dcc8f0ba148b8abf0d35 to 3038a9cde7214d8eab825759a18b74b8d3398811

---
title: Wufangni (吳芳霓)
categories: User
...

# 簡介
* 國立成功大學電機所 114 級

## 2024 Linux 核心實作 春季班 自我評量
* 簡介:國立成功大學電機所 114 級
* GitHub: [`Wufangni`](https://github.com/Wufangni)
* HackMD: [`Wufangni`](https://hackmd.io/@Wufangni)


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

## 成果發表和貢獻
### 成果發表和貢獻

## 作業與隨堂測驗
### 作業與隨堂測驗
* lab0: [HackMD](https://hackmd.io/@Wufangni/linux2024-homework1) / [GitHub](https://github.com/Wufangni/lab0-c)

    第一次作業完成了對 Queue 的各種操作,且在第三次作業引入 lib/list_sort.c 、 shuffle等操作,且研讀指定論文並參考 dudect 原始程式,修改函式使所有測資皆可通過。
* quiz1 + 2: [HackMD](https://hackmd.io/@Wufangni/linux2024-homework2)

    第二次作業重新回顧第一及第二週的隨堂測驗,對測驗時沒時間深入思考的程式原理有更深入的理解。
* quiz3 + 4: [HackMD](https://hackmd.io/@Wufangni/linux2024-homework4)

    類同第二次作業所得,第四次作業重新回顧第三及第四週的隨堂測驗,更加了解取對數的各種方式、ewma 在存取資料時的樣子,以及計算二進位表示法內 bit 設置數目等考題內容。
* Assessment: [HackMD](https://hackmd.io/@Wufangni/linux2024-homework5)

    閱讀〈因為自動飲料機而延畢的那一年〉得到許多啟發,且研讀了課程指定教材 CS:APP 3/e 到第二章節內容,對於電腦對數值的處理方式和各種細節操作更加熟悉,另外也整理了閱讀課程教材時遇到的幾種問題在一對一約談時與老師討論,以及觀摩去年期末專題發表,從中挑選了想投入的期末專題主題。
* Integration: [HackMD](https://hackmd.io/@Wufangni/linux2024-homework6)

    第六次作業我完成了自我檢查清單中的幾項任務,包括事前準備、研讀核心模組教材,以及了解 mutex lock、CMWQ 等相關運作原理。

## 期末專題
### 期末專題

紅黑樹實作: [HackMD](https://hackmd.io/@Wufangni/linux2024-final) / [GitHub](https://github.com/Wufangni/rbtree)

研讀教材了解紅黑樹與其他資料結構的差異,並設計實驗評估紅黑樹各種操作的效能。

## 與授課教師的互動
### 與授課教師的互動

一對一約談時間:5月22日 (週三) 下午1:30 – 下午2:00

## 修課心得
* [類神經網路的 ReLU 及其常數時間複雜度實作](https://hackmd.io/@sysprog/constant-time-relu)

    說明 union 的運用方式,與老師討論內部組成大小不相同可能造成的錯誤和我對於程式碼設計的理解,以及共用記憶體與 shared memory 在用語上應該做區隔。

* [記憶體管理、對齊及硬體特性](https://hackmd.io/@sysprog/c-memory)

    討論 CPU 是否做對齊的實驗結果。

* [編譯器和最佳化原理篇](https://hackmd.io/@sysprog/c-compiler-optimization)

    針對編譯時不同格式的輸出使用方式做討論,因 format string 的處理成本較高,老師提到有一種方式會直接判斷內容是否是純字串型態使用 puts() 的方式輸出,減輕輸出成本。

* [不只挑選任務的排程器](https://hackmd.io/@sysprog/linux-scheduler)

    老師提到在教材 CPU sched book 中有針對不同版本下 Linux 挑選任務的排程方式,並簡單介紹了關於 2.4 版本中 global runqueue 與 2.6.0 版本採用的兩種 queue 交互的比較。

### 修課心得

在作業五中我詳細閱讀了〈因為自動飲料機而延畢的那一年〉,對作者投入大量時間在與夢想奮鬥時的迷茫深感共鳴,早在上學期就聽聞這堂課的各種資訊,因考量到自身能力不知道是否能負荷這堂課的要求,以及需要兼顧實驗室本身的任務和其餘選修課程的各種作業及測驗,在最後決定修課前考量了許久才決定為自己衝一把,跨出我在學習環境的舒適圈。
學期剛開始我在對於 C 語言還不太熟悉的情況下接到了老師指派給學員的第一週作業,不斷的與身邊修課同學討論和研讀老師所提供的教材,才終於在時間截止前完成對指定佇列的程式碼操作,雖然完成的進度遠遠不及作業中的所有要求,但還是讓我在對 C 語言的程式實做方面有很大一個進展,以及能成功使用 Linux 核心所提供的 API 去完成我需要的操作。隨著課堂的推進,在每個禮拜老師提供的測驗題都讓我可以在最短時間內了解到教材內所述的運作原理,也因為前期的兩次作業讓我能夠花更多時間去對這些內容做更深入的回顧,且足夠透明的作業繳交流程也能讓我觀摩其他同學對於這些程式多種角度下的不同理解方式,打破我傳統以來自己獨立學習的侷限性,得到更多啟發和構想。透過這種作業紀錄的方式讓我學習到了如何更有系統性的統整自己所學,不只方便在未來可能記憶模糊時回來複習,也能在做筆記時進一步加強對於這些知識的認知,有時甚至能取得當下思考不到的想法。經過這幾個月的各種測驗和作業所學,我對於 Linux 核心的架構和操作有更深厚的認知基礎,例如簡易又有效率的數值換算和排程器運行原理...等,雖然不可否認的是與作者相同我在這堂課投入大量的時間卻與課堂預計能獲得的知識不能完全成正比,但在迷茫過程中也額外學習到許多寶貴的經驗(時間規劃和系統整理能力...等),非常感謝一路幫助我解惑的修課同學,以及老師每週用心的課程規劃,在這堂課提供給我超出我原先預計還要多許多的幫助,也成功達成不讓自己後悔選這門課的自我要求。
學期剛開始我在對於 C 語言還不太熟悉的情況下接到了老師指派給學員的第一週作業,不斷的與身邊修課同學討論和研讀老師所提供的教材,才終於在時間截止前完成對指定佇列的程式碼操作,雖然完成的進度遠遠不及作業中的所有要求,但還是讓我在對 C 語言的程式實做方面有很大一個進展,以及能成功使用 Linux 核心所提供的 API 去完成我需要的操作。

## 每月給指導教授的學習回顧
隨著課堂的推進,在每個禮拜老師提供的測驗題都讓我可以在最短時間內了解到教材內所述的運作原理,也因為前期的兩次作業讓我能夠花更多時間去對這些內容做更深入的回顧,且足夠透明的作業繳交流程也能讓我觀摩其他同學對於這些程式多種角度下的不同理解方式,打破我傳統以來自己獨立學習的侷限性,得到更多啟發和構想。透過這種作業紀錄的方式讓我學習到了如何更有系統性的統整自己所學,不只方便在未來可能記憶模糊時回來複習,也能在做筆記時進一步加強對於這些知識的認知,有時甚至能取得當下思考不到的想法。

經過這幾個月的各種測驗和作業所學,我對於 Linux 核心的架構和操作有更深厚的認知基礎,例如簡易又有效率的數值換算和排程器運行原理...等,雖然不可否認的是與作者相同我在這堂課投入大量的時間卻與課堂預計能獲得的知識不能完全成正比,但在迷茫過程中也額外學習到許多寶貴的經驗(時間規劃和系統整理能力...等),非常感謝一路幫助我解惑的修課同學,以及老師每週用心的課程規劃,在這堂課提供給我超出我原先預計還要多許多的幫助,也成功達成不讓自己後悔選這門課的自我要求。

### 每月給指導教授的學習回顧
* 二月份學習回顧:3月7日 週四 下午10:27

    1.與指導教授提及 Linux 核心實作 課程可習得的內容以及可對自身與實驗室研究帶來的好處

    2.列出在二月份研讀的論文及在課堂所學的 Linux 核心相關的原始碼(linked list)的學習狀況
* 三月份學習回顧:4月7日 週日 上午2:15

    1.說明了第二次及第三次作業內容,包括自身的作業回顧和如何對前次作業進行補強

    2.附上作業筆記的連結供指導教授參考
* 四月份學習回顧:3月7日 週四 下午10:27

    1.說明對第四次作業的測驗回顧內容,以及第五次作業的學習狀況

    2.附上作業筆記的連結供指導教授參考
* 五月份學習回顧:6月14日 週五 下午5:35

    1.列出在第六次作業的自我檢查清單學習概況,以及一對一約談的情況說明

    2.附上作業筆記的連結以及期末專題方向供指導教授參考


## 自我評量 (1 ~ 10)
### 自我評量 (1 ~ 10)

$(0 \times 9 \times 8 \times 8 \times 9 \times 9) ^ {1/6} = 6$ 

使用方案 B 計分:$1 + floor(6) = 7$