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

版本 9c0006ab252599b1726e993729eb8540e77db610

YangYeh-PD (葉振揚)

個人簡介

  • 國立成功大學 物理學系 113 級 (2019 ~ 2023)

  • GitHub: YangYeh-PD

  • HackMD: YangYeh

個人背景

這其實是我第二次修這堂課,第一次修這堂課是在去年。考慮到我那個學期還有修量子物理以及熱統計等課程,因此在第 13 週星期五的時候退選了。

那時候退選能寫的程度,跟我今年剛開始修這門課時的程度差不多,就是只會 C 語言的基本語法以及簡單的 DSA,對於作業系統的認知一竅不通,只知道 OS 能做電腦資源的管理。

我覺得這也是我的問題,沒有好好利用去年的時間增強自己的實力。

成果發表與貢獻

我其實在前六週的作業中,想嘗試對 Linux 當中的 lib/math/int_sqrt.c 做出改善效能的貢獻。

由於我在看該核心程式碼赫然發現有使用到分支,因此我本來想利用前幾週所學到的 bitmask 來避免掉這個分支。不過我做過實驗後才發現 bitmask 的作法竟然比分支多了 5 個 instructions。因此我最後沒有送出我的程式碼。(詳情請見 2024q1 Homework4 (quiz3+4))

雖然我對大型的 Github 教材專案沒有貢獻,不過在看 HackMD 教材的時候,我會修改裡面的錯字、排版,以及對應 C 語言規格書補充相關的內容。

以下是目前透過 HackMD 還能夠追溯到的修改內容。

考量到這部份雖然嘗試過,但終究對大型專案沒什麼貢獻,只對教材有些許調整,因此我只能給自己 5 分。

作業與隨堂測驗

以下是我這學期有寫的作業以及隨堂測驗。

雖然都不完整,很多作業要求也都沒有完成,但我透過這些作業,學會使用很多我先前沒聽過的工具(比如 perf 或是 gnuplot) 來作實驗,測量程式碼執行效率,並呈現實驗結果(詳情請見上方連結)。同時,我也藉由做作業開始實際去看 Linux 核心程式碼,並嘗試做出貢獻。不過考量到這部份我也有兩份大作業(integration 以及 ktcp)完全沒有動工,因此扣兩分,我最多只能給自己 8 分。

期末專題

(待完成)

與受課教師的互動

課程問答紀錄

我一開始對作業系統很陌生,甚至在選擇期末專題的時候,很多題目都看不懂。因此在選擇做排程器研究的時候,我其實也沒有研究方向,只是選擇了我能夠理解的題目。直到跟老師討論後,才了解排程器有很多的研究方向。比如如何降低 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) = ?