版本 92f726f249c16e99ca32ccfee5ec587650490e27
Changes from beginning to 92f726f249c16e99ca32ccfee5ec587650490e27
---
title: yaohwang99 (黃堯)
categories: User
...
# 簡介
* 國立成功大學 機械工程學系 資訊工程學系 110 級 (2017 ~ 2022)
* GitHub: [`yaohwang99`](https://github.com/yaohwang99)
* HackMD: [`yaohwang99`](https://hackmd.io/@yaohwang99)
## 成果發表
## Linux 核心和相關專案貢獻
# 2022 Linux 核心設計/實作 春季班 自我評量
## 作業共筆
* lab0-c: [GitHub](https://github.com/yaohwang99/lab0-c) / [HackMD](https://hackmd.io/@yaohwang99/linux2022-lab0)
* fibdrv: [GitHub](https://github.com/yaohwang99/fibdrv) / [HackMD](https://hackmd.io/@yaohwang99/linux2022-fibdrv)
* ktcp: [GitHub](https://github.com/yaohwang99/khttpd) / [HackMD](https://hackmd.io/@yaohwang99/linux2022-ktcp)
* khttpd: [GitHub](https://github.com/yaohwang99/khttpd) / [HackMD](https://hackmd.io/@yaohwang99/linux2022-ktcp)
## 測驗共筆
* quiz1: [HackMD](https://hackmd.io/@yaohwang99/linux2022-quiz1)
* quiz2: [HackMD](https://hackmd.io/@yaohwang99/linux2022-quiz2)
* quiz3: [HackMD](https://hackmd.io/@yaohwang99/linux2022-quiz3)
* quiz4: [HackMD](https://hackmd.io/@yaohwang99/linux2022-quiz4)
* quiz5: [HackMD](https://hackmd.io/@yaohwang99/linux2022-quiz5)
* quiz6: [HackMD](https://hackmd.io/@yaohwang99/linux2022-quiz6)
* quiz8: [HackMD](https://hackmd.io/@yaohwang99/linux2022-quiz8)
## 期末專題
* Effective System Call Aggregation (ESCA): [HackMD](https://hackmd.io/@yaohwang99/BJgMdmPD9)
* 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](https://github.com/eecheng87/ESCA/pull/24)
* 擴充Effective System Call Aggregation (ESCA),允許更多應用情境,選定 [lwan] (https://lwan.ws/) 這個高效的網頁伺服器實作。[pull request](https://github.com/eecheng87/ESCA/pull/25)
## 修課心得
計畫要修這一門課時就預期要投入大量的時間,因此特別排在了課比較少的最後一學期。學期初時就開始閱讀大量的教材,並且藉由 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 的任務。