版本 2a3c053eb750454cfef450930011fbaddea87741
jimmylu890303 (盧俊銘)
簡介
國立成功大學 電機工程所 114 級 (2023~ 2025)
GitHub:
jimmylu890303
HackMD:
jimmylu0303
2024 Linux 核心設計 春季班 自我評量
成果發表與貢獻
閱讀文件時做的錯字修訂:
作業與隨堂測驗
-
完成佇列作的操作,實作出 Fisher–Yates shuffle 及 q_sort ,再 q_sort 與 list_sort 及 tim_sort 做效能上的評估與比較
quiz1 + 2: HackMD
探討 Quick sort 的效能與其時間複雜度、Timsort 各個函式及使用雜湊表實作 LRU Cache。
quiz3 + 4: HackMD
分析 bitwise 的操作,內容包含整數平方根的計算、 log2 、除以 10 和取餘數等操作,使用位元操作來加速計算,減少了除法和乘法的使用、及 Popcount 計算 Hamming Distance 的操作,且外使用 GCC 提供的 built-in 函數用來優化編譯結果。
Assessment: HackMD
撰寫閱讀〈因為自動飲料機而延畢的那一年〉後的心得,研讀 CS:APP 3/e 第一章、第二章並對前期作業進行改進兩題。
Integration: HackMD
閱讀〈Linux 核心模組運作原理〉並對照 Linux 核心原始程式碼 (v6.1+),閱讀《The Linux Kernel Module Programming Guide》(LKMPG),並且學習實作字符設備的練習。
期末專題
Virtio-net with KVM-host: HackMD / GitHub
在這次專題中,分析 KVM 運作原理,並展示一個以 KVM 為基礎的精簡虛擬機器管理程式實作( kvm-host ),它能在 x86-64 及 arm64 平台上運作,提供了基本的 VirtIO 儲存裝置、 serial 裝置 (用來作為 console) ,並且能成功在上面執行 Linux 系統,而專題目標是在該虛擬機器上實作 Virtio-net 裝置。
與授課教師的互動
一對一討論:5月 20日 (星期一)⋅下午2:30 - 3:00
問題一: 為何後續 linux 的維護者不將不可靠信號改成可靠信號? 額外分成非即時信號及即時信號的必要性?
問題二: 當在一開始 A 呼叫 setjmp 時, setjmp 會將 stack pointer, instruction pointer, the values of other registers, the signal mask 存在 jmp_buf 的 buffer 內 longjmp 作使用。但在執行 setjmp 時, pc 會指向 line 8 的位置。 當 B 使用 longjmp 時會恢復 Buf 內的資訊,那應該會執行printf(“A setjmp address”); 一次,但是真實的作用是會觸發 setjmp(Buf) != 0 行為則執行 else 內的行為。
問題三: 在 /dev/ 下的裝置有 major number 和 minor number,在對 /dev/下的裝置作操作時, linux kernel 會透過 major number 去找到對應的 module , 但是若有多個 device 對應到同個 major number,也是會找相同的 module,但是要如何透過不同的 minor number 去控制不同的驅動行為 ?