版本 0c1b57b5edd3d488fd58bf00eeaeb7e57e4d15ce
leowu0411 (鄔博皓)
簡介
2025 Linux 核心設計/實作 春季班 自我評量
成果發表和貢獻
針對以下教材格式以及拼字做出校正,在對如下進行改正前,對貢獻的看法總有些畏手畏腳,總認為依照目前的實力還沒到做出貢獻的時候,但引用授課教師於自我評量的回顧,即使改正錯字也算得上貢獻,故選擇以下幾篇對期末專題有極大助益之教材進行修正 – 不論處在什麼時期,都應該找出自己能夠貢獻的方式
- KVM: Linux
虛擬化基礎建設
- virtual machine(VM) -> virtual machine (VM)
- Qemu -> QEMU
- 將以 「,」結尾的句子結尾更正為以 「。」結尾
- 新增 「()」與文字間的空白
- Stack Segment (SS). Pointer to the stack. -> Stack Segment (SS): Pointer to the stack.
- paramters -> parameters
- 建構
User-Mode Linux 的實驗環境
- 將以 「,」結尾的句子結尾更正為以 「。」結尾
- Linux 核心設計:
不僅是個執行單元的 Process
- be waked up -> be woken up
作業/隨堂測驗
- Homework
(lab0)
- 撰寫
Linux 核心風格的鏈結串列
- 學會使用 container_of 巨集
- 透過於結構體嵌入鏈結串列前後指標 list_head 管理資源
- 統計學之重要性
- 實作 Fisher–Yates shuffle 演算法,對佇列進行隨機排序,並利用 Pearson’s chi-squared test 驗證亂度是否足夠
- 研讀〈Dude, is my code constant time?〉 利用 Welch’s t-test 驗證實作是否為常數時間,避免側通道攻擊
- tiny-web-server : 理解如何利用 select() 系統呼叫達到 I/O 多工 (同時處理 socket 以及 stdin)
- 透過信號處理認識 setjump/lomgjump 對於後續理解 corotine 奠定基礎。
- 撰寫統一規範,清楚簡潔的 git commit message,實際應用於大三專題協作以及本身在進行的電子靶場專案,提供清楚的專案開發軌跡方可使成果得已分享以及交接。
- 撰寫
Linux 核心風格的鏈結串列
- Homework
(kxo)
- 閱讀 LKMPG 學習如何撰寫核心模組,透過核心模組如何註冊回呼函式深刻理解到 everything is a file 帶來的益處
- 核心模組如何與使用者空間溝通傳遞資料
- Homework
(assessment)
- 閱讀 cs:app 第二章重新認識資料的表示以及處理,理解有號數無號數的運算行為。
- 認識 corotine,單一執行緒多工,在此之前的認知,伺服器就是一個請求一個執行緒; 透過實際觀察 caldera 這個開放的自動化攻擊平台,其做法也是利用 corotine 單一執行緒,同時處理使用者請求、與後門程式溝通、發送資料等工作 (python eventloop)。
- Homework
(khttpd)
- 閱讀 cs:app ch11 認識 socket programming,認識 bind(), accept(), ntohs()、htonl() 等函式以及其背後設計考量
- 透過 user-echo-server 認識 Reactor Pattern,利用 epoll 以及 non-blocking 的方式於單一執行緒運行伺服器
- 實際利用 CMWQ,替換伺服器 khttpd 原本使用 Kthread 服務連線的方式,藉由降低建立執行緒的成本帶來約 2.25 倍的吞吐量。 ## 期末專題
