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

yaohwang99 (黃堯)

簡介

  • 國立成功大學 機械工程學系 資訊工程學系 110 級 (2017 ~ 2022)

  • GitHub: yaohwang99

  • HackMD: yaohwang99

成果發表

Linux 核心和相關專案貢獻

2022 Linux 核心設計/實作 春季班 自我評量

作業共筆

測驗共筆

期末專題

  • Effective System Call Aggregation (ESCA): HackMD
  • 1 對 1 討論時間
    • 2022/4/16 星期六下午 3:00 ~ 3:30
    • 2022/5/20 星期五下午 1:30 ~ 2:00
    • 2022/6/15 星期三下午 8:00 ~ 9:00 (與助教)
  • 目前完成成果
    • 更新nginx 版本至 v1.22.0。pull request
    • 擴充Effective System Call Aggregation (ESCA),允許更多應用情境,選定 [lwan] (https://lwan.ws/) 這個高效的網頁伺服器實作。pull request

修課心得

計畫要修這一門課時就預期要投入大量的時間,因此特別排在了課比較少的最後一學期。學期初時就開始閱讀大量的教材,並且藉由 lab0 學習 c 語言,意識到必須要了解硬體、編譯器最佳化、排程器等等重要議題,才能寫出高效率的程式。

在 lab0,我重新複習了指標的運用,以及避免各種 memory leak,並且了解 Linux kernel 如何將 linked list 巧妙地應用於各種結構。在 fibdrv,我藉由 perf 工具及不斷實驗嘗試,了解到程式中巨大記憶體開銷成本。也在各個 quiz 了解 bitwise 操作、多執行緒等等議題。

在擴充 ESCA 的過程,我需要找出程式碼所使用的特定系統呼叫位置,龐大的專案導致程式碼追蹤困難,因此需要利用 gdb 等等工具不斷嘗試。我也藉由觀摩 nginx、lwan 等等優秀的專案了解到「物件導向是一種態度」,程式藉由 structure 一層一層的包裝並傳入函式,形成一個邏輯清晰的架構。

自我評量 (1 ~ 10)

我給自己 8 分

在這學期初每週都投入了 20 小時以上在作業和閱讀教材,包括 lab0 以及 fibdrv,在學期中時,因為 ktcp、khttpd 專案較為龐大,造成進度有些停滯,只有完成基本的程式碼理解及回答 quiz 問題。在期末專題,我繼續投入了大量時間,完成擴充 ESCA 使其支援 lwan 的任務。