版本 e5dd6b1ff59fe1461f59d56c078e2f97f3278778
Changes from e5dd6b1ff59fe1461f59d56c078e2f97f3278778 to f66770190dc157bd7b73faa36468b4e738663502
---
title: Chinchun Chen (陳金諄)
categories: User
...
## 2024 Linux 核心實作 春季班 自我評量
* 簡介:國立成功大學電機所 114 級
* GitHub: [david965154](https://github.com/david965154)
* HackMD: [david965154](https://hackmd.io/@david96514)
### 成果發表與貢獻
閱讀文件時做的錯字修訂:
* [Linux 核心模組運作原理](https://hackmd.io/@sysprog/linux-kernel-module)
* [你所不知道的 C 語言:編譯器和最佳化原理篇](https://hackmd.io/@sysprog/c-compiler-optimization)
* [Linux 核心設計: 淺談同步機制](https://hackmd.io/@sysprog/linux-sync)
* [你所不知道的 C 語言:動態連結器篇](https://hackmd.io/@sysprog/c-dynamic-linkage)
增加快速開平方根計算 magic number 計算方法解釋:
* [從 √2 的存在談開平方根的快速運算](https://hackmd.io/@sysprog/sqrt)
### 作業與隨堂測驗
* lab0: [GitHub](https://github.com/david965154/lab0-c) / [HackMD](https://hackmd.io/@david96514/linux2024-homework1)
這份作業中主要實作了佇列的基本操作,同時對一些特定功能進行分析,如洗牌亂度及排序時執行時間複雜度,在之後的作業三也加入了井字遊戲不同演算法及功能的實作,並閱讀 coroutine。
- 這份作業中主要實作了佇列的基本操作,同時對一些特定功能進行分析,如洗牌亂度及排序時執行時間複雜度,在之後的作業三也加入了井字遊戲不同演算法及功能的實作,並閱讀 coroutine。
* quiz1 + 2: [HackMD](https://hackmd.io/@david96514/linux2024-homework2)
- 內容為分析測驗中 quick sort 、 timsort 、建立二元樹、 LRU Cache 實作及在一段特地記憶體中尋找第 N 個設定位元的函式。
* quiz3 + 4: [HackMD](https://hackmd.io/@david96514/linux2024-homework4)
- 內容為分析測驗中有效率的開根號、避免使用除法的模除運算、 $log_2$ 、 EWMA 及漢明距離計算。
* Assessment: [HackMD](https://hackmd.io/@david96514/linux2024-homework5)
- 作業內容我選擇改進
1. 第 2 周測驗 3 : fns 函式改進
2. 第 3 周測驗 2 : 不依賴任何除法指令的 % 9 (modulo 9) 和 % 5 (modulo 5) 程式碼
3. 第 4 周測驗 1 : 避免重複計算、一次輸入多個字串需要同時計算 Total Hamming Distance 的版本
並紀錄閱讀〈因為自動飲料機而延畢的那一年〉的啟發,並研讀 CS:APP 3/e 第二章。
* Integration: [HackMD](https://hackmd.io/@david96514/linux2024-homework6)
- 作業中除了閱讀給定教材並分析其功能外,在自己的實體電腦運作 GNU/Linux 並實際將模組掛載至核心執行,並嘗試將 simrupt/simrupt.c 內的 simrupt_work_func 改寫為 lock-free 。
* 另外做的一些筆記:
- [FNS 改進](https://hackmd.io/@david96514/HJoPc_YeR) 記錄了改進 fns 並嘗試發送 patch 的過程
- [Linux 核心實作 2024q1 第 18 週測驗題](https://hackmd.io/@david96514/linux2024-homework5) 因為當下沒有理解程式碼行為而無法回答老師問題,事後花了點時間重新理解。
### 期末專題
bitops: [HackMD](https://hackmd.io/@david96514/HJnf3TOQC)
1. 嘗試重現前面執行人的改進並套用至 Linux v6.8+ 版本,並提出驗證方法證明其與現有版本相容。
2. 嘗試改進第 7 周測驗找出一段記憶體位置中特定字元的演算法並貢獻
3. 修訂快速開平方根運算
### 與授課教師的互動
一對一討論: 5 月 19 日 (星期日) 下午9:30 - 10:15
* [2024-04-16 問答簡記](https://hackmd.io/VyLWa5VNQG-EpDoi2WqTMw#david965154): 討論 mmap 於 fork 的應用,並理解 fork 並非越多越好。
* [FNS 改進](https://hackmd.io/@david96514/HJoPc_YeR): macro 定義在何時會被設定。
* [2024q1 Homework5 (assessment)](https://hackmd.io/eebnNSnvT8KSASWLG6aw1g#%E7%A0%94%E8%AE%80-CSAPP-3e): 研讀 CS:APP 3/e 後關於使用變數型態選擇的問題。
### 修課心得
### 與指導教授的學習回顧
* 二月回顧:3月7日 週四 下午11:23
- 學習有效率的應用時間
* 三月回顧:4月8日 週一 下午7:38
- 對於已經超過繳交期限的作業再去嘗試完成
* 四月回顧:5月16日 週四 上午1:32
- 嘗試發送 patch 貢獻至 linux 核心的過程
### 自我評量
$(5 \times 8 \times 8 \times 7 \times 8 \times 7) ^ {1/6} = 7.07$
使用方案 B 計分:$1 + floor(7.07) = 8$