--- title: YangYeh-PD (葉振揚) categories: User ... # 個人簡介 * 國立成功大學 物理學系 113 級 (2019 ~ 2023) * GitHub: [`YangYeh-PD`](https://github.com/YangYeh-PD) * HackMD: [`YangYeh`](https://hackmd.io/@YangYeh) # 個人背景 這其實是我第二次修這堂課,第一次修這堂課是在去年。考慮到我那個學期還有修量子物理以及熱統計等課程,因此在第 13 週星期五的時候退選了。 那時候退選能寫的程度,跟我今年剛開始修這門課時的程度差不多,就是只會 C 語言的基本語法以及簡單的 DSA,對於作業系統的認知一竅不通,只知道 OS 能做電腦資源的管理。 我覺得這也是我的問題,沒有好好利用去年的時間增強自己的實力。 # 成果發表與貢獻 我其實在前六週的作業中,想嘗試對 Linux 當中的 [`lib/math/int_sqrt.c`](https://github.com/torvalds/linux/blob/master/lib/math/int_sqrt.c) 做出改善效能的貢獻。 由於我在看該核心程式碼赫然發現有使用到**分支**,因此我本來想利用前幾週所學到的 **bitmask** 來避免掉這個分支。不過我做過實驗後才發現 bitmask 的作法竟然比分支多了 5 個 instructions。因此我最後沒有送出我的程式碼。(詳情請見 [`2024q1 Homework4 (quiz3+4)`](https://hackmd.io/@YangYeh/linux2024-homework4)) 雖然我對大型的 Github 教材專案沒有貢獻,不過在看 HackMD 教材的時候,我會修改裡面的錯字、排版,以及對應 C 語言規格書補充相關的內容。 以下是目前透過 HackMD 還能夠追溯到的修改內容。 * [錯誤更正碼介紹和實作考量](https://hackmd.io/2xkLnKGIRt-bZokpCyAgTw) - 改良某處數學式的表達。 * [你所不知道的 C 語言 : bitwise 操作](https://hackmd.io/WxAJUeZKQMuKk5IV9yBlqg#) - 修正原先**算術位移**的錯誤描述,並引入 C99 規格書佐證。 考量到這部份雖然嘗試過,但終究對大型專案沒什麼貢獻,只對教材有些許調整,因此我只能給自己 **5** 分。 # 作業與隨堂測驗 以下是我這學期有寫的作業以及隨堂測驗。 * [2024q1 Homework1 (lab0)](https://hackmd.io/@YangYeh/linux2024-homework1) * [2024q1 Homework2 (quiz1+2)](https://hackmd.io/@YangYeh/linux2024-homework2) * [2024q1 Homework4 (quiz3+4)](https://hackmd.io/@YangYeh/linux2024-homework4) 雖然都不完整,很多作業要求也都沒有完成,但我透過這些作業,學會使用很多我先前沒聽過的工具(比如 `perf` 或是 `gnuplot`) 來作實驗,測量程式碼執行效率,並呈現實驗結果(詳情請見上方連結)。同時,我也藉由做作業開始實際去看 Linux 核心程式碼,並嘗試做出貢獻。不過考量到這部份我也有兩份大作業(integration 以及 ktcp)完全沒有動工,因此扣兩分,我最多只能給自己 **8** 分。 # 期末專題 (待完成) # 與受課教師的互動 課程問答紀錄 * [2024-05-07,14,18](https://hackmd.io/@sysprog/r18CGUwMR) 我一開始對作業系統很陌生,甚至在選擇期末專題的時候,很多題目都看不懂。因此在選擇做排程器研究的時候,我其實也沒有研究方向,只是選擇了我能夠理解的題目。直到跟老師討論後,才了解排程器有很多的研究方向。比如如何降低 CPU Largest Latency,或是怎麼嘗試判斷一個任務需不需要 migrate 等等,都是與效率有關的重大議題。這讓我對 Scheduler 有更多的了解。 一對一討論時間 * 18 May, 2024 19:00 ~ 20:00 在一對一討論的時候,除了期末專題,我也向老師請教如何自己動手用 C 語言製作一個作業(或嵌入式)系統。因為我認為實際寫過一遍,會比起只讀教科書印象更深刻。我也從老師給的資料當中也獲益良多。從最簡單的 C 語言開始,一直到 Makefile, ELF 詳細說明很清楚。雖然我還是對很多專有名都不熟,需要去查,但至少對如何架構一個作業系統有更明確的方向。 我給自己打 **8** 分。 # 所見所聞所感 (待完成) # 幾何平均計算 GEOMEAN = (5 * 8 * ? * 8 * ?) ^ (1/5) 由於我對 Linux, glibc, gcc 等沒有 non-trivial 的貢獻,因此只能採取方案 B。 **總分** = 1 + floor(GEOMEAN) = ?