# 2025q1 Homework1 (ideas)
contributed by < `HeatCrab` >
## shecc
>執行人: nosba0957, vacantron
>[開發紀錄](https://hackmd.io/@sysprog/H11Da3FQA)
>[專題解說影片](https://youtu.be/h96ShOAHkc0)
1. ### 過程中的認知
1. 需要對編譯器的運作有一定的掌握,像是 Bootstrap 如何運作的 、 Makefile 如何撰寫、 ELF 是什麼等等。
2. 前任作者的 PR 針對 `shecc` 增強功能與修復問題,包括:調整記憶體分配限制、支援除法與三元運算子等語法、實現 `malloc` 和 `free`、支援迴圈中的 `break` 和 `continue`、新增全域變數初始化、保留 `main` 函數返回值,以及優化邏輯非與位元運算等,使 `shecc` 更符合標準 C 編譯器要求,並通過測試驗證。
3. 執行人使用 SSA 優化 `shecc`。
4. 執行人改進 `shecc`,修正邏輯與運算錯誤,符合 C99 標準,實現左到右求值,調整解析流程並使用 phi 函式,解決記憶體與 do-while 迴圈問題,提升流程控制正確性。
2. ### 遇到的疑惑
1. 第一次看到 SSA 這個名詞,沒有任何的基礎概念,所以無法看懂,執行人的改善帶來的影響。
1. 初步理解 SSA 後發現,這個改動對 `SHECC` 來說十分巨大,像是改善的 Issue #88 中, SSA 就帶來一定的幫助。
2. 研究 phi 函數的作用,發現是個由很基礎的概念延伸出巨大作用的函數。依賴這個看似簡單的函數, SSA 可以處理許多複雜的數據,甚至優化。
3.
2. 很認真,看完前任作者的開發日誌的感想,為什麼有一些感覺很基本的語法在 `SHECC` 中一開始沒有涵蓋?像是 `continue` 、 `malloc` 、 `free` 這些很常見的函數。
3.
3. ### 如何改進
## simplefs
>執行人: HotMercury, jason50123
>[開發紀錄](https://hackmd.io/hJgqGkMIShCrwM8_bPdLjw?both)
>[專題解說影片](https://www.youtube.com/live/kwYgfkD1dWA?si=I0L4CAOfqVgawCaN&t=5959)
1. ### 過程中的認知
1. simplefs 是一個檔案系統,有四次的開發紀錄,到目前是第五任開發。
2. 第一份開發紀錄主要聚焦在 `inode` 的問題上。
3. 第二份開發紀錄主要在處理指令與檔案上限的問題。
4. 承3.,紀錄中沒有看到真的處理了問題的部分,倒是重新用自己的口吻說明了第一任開發紀錄做了什麼,像是 `superblock` 、 `inode`。
5. 第三份開發紀錄做得很詳細,一樣科普一下 Linux 系統的 VFS 是什麼,有趣的是,我看到第二份開發紀錄中提到的指令問題在這邊被嘗試解決。
6. 承5.,嘗試做了許多事情,但是指令的問題仍舊沒有被解決。
7. 第四份報告的內容很豐富。首先,發現指令的問題被修復了,最後是被官方修復了,執行人嘗試重現,但沒有成功。或許是值得高興的事情?
8. 承7.,第四份報告做了許多事情,沒有明確改進的事項,但是測試了許多前任遭遇到的問題,並給出自己的解答。
9. Linux 每次的版本更新不一定有考慮到 simpleFS ,導致往往需要確認是否有哪些地方又出現 `bug` ,需要開發者們去調整。
10. 指令與版本問題是 simpleFS 需要攻克的最大難關。
2. ### 遇到的疑惑
1. 除了第一份開發紀錄外,每一份開發紀錄都在嘗試處理指令的問題,據我的理解,可能跟 VFS 或是 Linux 本身比較有關係?儘管 simpleFS 嘗試去兼容,但有可能真正的問題不僅僅是出在 VFS 上,所以前幾任開發者都沒有辦法找到問題?
2. JBD2 會不會日後形成全新的 `bug` 來源?
1. 簡單理解與查詢相關資料後發現,JBD2其實算相對穩定的官方模組,且因為成熟,相對方便維護。
3. 曾異想天開覺得為何不乾脆自己開發一個「日誌」功能。查了壹下後發現是我低估架構日誌功能的難度了,說不定還會更加不穩定,與花費維護成本。
3.
4. ### 如何改進
1. 開發 simpleFS 自己的日誌功能,防止更多的 `bug` 要解決
* 被我自己否決了。
2. simpleFS 不應該只專注在 VFS 上,而是嘗試去尋找更新時與 VFS 相關的部分?或許問題來源就在核心的其他模組或功能裡?
## Demystifying the Linux CPU Scheduler
>執行人: 執行人: Kuanch, devarajabc
>[開發紀錄](https://hackmd.io/@sysprog/rkJd7TFX0)
>[專題解說影片-1](https://youtu.be/8L8SsG6TfJg)
>[專題解說影片-2](https://youtu.be/kwYgfkD1dWA?t=1493)
1. ### 過程中的認知
2. ### 遇到的疑惑
3. ### 如何改進
## STM32F4 移植和系統初始化流程
>執行人: hugo0406
>[開發紀錄](https://hackmd.io/@sysprog/H11Da3FQA)
>[專題解說影片](???) - 開發紀錄未提供
1. ### 過程中的認知
2. ### 遇到的疑惑
3. ### 如何改進
## rhashtable 及核心記憶體管理研究
>執行人: SHChang-Anderson
>[GitHub](https://github.com/SHChang-Anderson/rcuhashbash)
>[開發紀錄](https://hackmd.io/@sysprog/rkOByUtI0)
>[專題解說影片](https://youtu.be/FX0I8hzsizc)
1. ### 過程中的認知
2. ### 遇到的疑惑
3. ### 如何改進
## ()
1. ### 過程中的認知
2. ### 遇到的疑惑
3. ### 如何改進
## ()
1. ### 過程中的認知
2. ### 遇到的疑惑
3. ### 如何改進