---
# System prepended metadata

title: 2025q1 Homework1 (ideas)

---

# 2025q1 Homework1 (ideas)
contributed by < [BennyWang1007](https://github.com/BennyWang1007) >

{%hackmd NrmQUGbRQWemgwPfhzXj6g %}

## ideas

### 還政於民的 sched_ext 及機器學習如何幫助 CPU 排程: vax-r
> HackMD: [開發紀錄](https://hackmd.io/@sysprog/BJdyxvxX0)
> YouTube: [Video](https://www.youtube.com/live/kwYgfkD1dWA?t=2033)
1. sched-ext 有類似 VFS 的界面，可自定義擴展 BPF 排程器
2. 要素：
    - 客製化不同的排程，像是影片所述能將特定工作（如原神）的優先級提高。
    - 提昇排程策略的速度
    - 排程效率：可以快訴修改部署，錯誤則會roll-back回去。
3. 實做使用編譯kernel(CPU-bound) + fio disk I/O tasks（I/O-bound）

問題：
1. 大量的 CPU-bound + I/O-bound tasks 是否能真正的模擬現實情境，如 machine learning tasks 會先有大量的I/O-bound tasks 才接著 CPU-bound tasks。有測試全都 CPU/IO-bound的情景嗎？
2. 我不懂最後學長提問的：I/O-bound 會影響 CPU-bound 的問題，在現實環境下 I/O-bound 本來就會佔用一些 CPU 資源，想請此問題對實驗有造成什麼影響？
3. synchronous I/O 和 async I/O 在此實驗有可能有什麼影響？ Tasks的權重不好預估？


### EEVDF 相較於 CFS 的量化比較 : ShawnXuanc
> HackMD: [開發紀錄](https://hackmd.io/@sysprog/SyTH65LUC)
> YouTube: [Video](https://www.youtube.com/live/kwYgfkD1dWA?t=3953)

1. CFS 能"公平的"（藉由權重）分配不同 process 的 CPU 時間
2. Virtual runtime
3. EEVDF 能藉由 Eligible time 以及 deadline 來進行排程，選擇執行的程序。
4. 結果表明，EEVDF 在較高的負載下，其 wake-up latency 顯著的比 CFS 低，最大延遲 EEVDF 也明顯的比 CFS 還要短。

問題：
1. 請問為什麼影片中大量提及的 schedgraph 會發音成 [sync-graph]? 是特殊套件的專屬念法嗎？
2. 比較結果可發現 EEVDF 在 context switch 上更頻繁？能造成 wake-up latency 顯著提升，但未必都是好事，或許能讓排程器動態的決定排程頻率？


### 開發具體而微的 Linux 檔案系統 : HotMercury, jason50123
> HackMD: [開發紀錄](https://hackmd.io/@sysprog/r1e08fg7A)
> YouTube: [Video](https://www.youtube.com/live/kwYgfkD1dWA?t=5456)

1. 此專題將 simplefs 移植到 v6.8 版 kernel
2. 含 journel 功能

因為在大三上的作業系統課程中，我們也有嘗試寫過簡單的檔案系統，有以下問題想問：
1. 我認為執行 `dd if=/dev/zero...` 命令時發生的問題有些怪異，在 alloc raw block 的時候理應會順帶將指標存入 extend block，這之中一定有嚴重的實現(implementation)錯誤。
2. 中間提到的 remove file 的操作，為什麼原本的實作會需要將所有檔案向前移？像常見的檔案系統一樣，使用 bitmap 有什麼阻礙嗎？
3. 關於 journel 防止 crash 的機制，是否能考慮將每一步操作都寫入一個日誌檔案，等日誌檔案完成寫入後才開始寫入資料、移動指標等，並在每次fs啟動時先檢查日誌的尾部操作是否完成。若日誌寫到一半斷電也不會影響原先的檔案系統。
4. 在各檔案系統都很小的情況下，請問 simplefs 相較於常見的 ext4、FAT32、NTSF 等檔案系統有什麼關鍵的優勢嗎？（經查詢 kernel module 大小 `ls -lh /lib/modules/$(uname -r)/kernel/fs/`，例如 exfat 僅佔 56 KB ，而最小的更僅有 8 KB）


### 運用並行處理來強化網站資料存取的效率 : yeh-sudo
> HackMD: [開發紀錄](https://hackmd.io/@sysprog/B1W2HKTER)
> YouTube: [Video]()


1. RCU 允許多個 reader 與一個 writer 讀取與更新資料的同步機制

問題
1. 影片中提及的 lock-free programming 為何？參考 [此筆記](https://hackmd.io/@sysprog/concurrency-lockfree) 後，與傳統的 atomic 實作有何區別？
2. 簡單的看名稱猜測不同的 RCU，如 Memory-barrier-based 與 Signal-based RCU，和 Linux kernel 的 read/write-lock 真的有顯著的效能差異嗎？
3. 為何 QSBR 的性能分布會很大？

### 建構 RISC-V 相容處理器並運作 Linux 核心 : millaker
> HackMD: [開發紀錄](https://hackmd.io/@sysprog/HyjiP43N0)
> YouTube: [Video](https://www.youtube.com/live/qUd1PtF-R38?t=5926)

1. OpenSBI　是一個 RISC-V runtime

思考:
1. 這份專題已經遠超我的知識範圍，從 loader 之後都聽不懂，未來需要多補足這方面的知識。

問題:
1. 與其在不支援 FPU instructions 的處理器上模擬 FPU，如果直接將浮點運算的程式碼轉成整形會有很大的衝擊、影響嗎？


### 打造具備網路連線的精簡虛擬機器 : jimmylu890303
> HackMD: [開發紀錄](https://hackmd.io/@sysprog/ryG0h25I0)
> YouTube: [Video](https://www.youtube.com/live/qUd1PtF-R38?t=9629)

1. 虛擬化技術分為:
    1. System VM：包含 CPU, RAM 等周邊裝置，如 VMWare, Virtual-Box
    2. Process VM：提供虛擬化環境給 process，如 JVM。
2. KVM 是 Linux 核心中的虛擬化模組，讓核心變成虛擬機器管理程式(Hypervisor)，並提供API供 User space 呼叫。

問題：
1. 為何 KMV 會以 `open`, `close` 等檔案 system call 進行操作，而不是以 kernel module 或執行檔的身分存在？
2. 回顧聊天室，為何 Type II hypervisor 有機會比 Type I 快，在系統呼叫與模擬上的 overhead 應該不小？
3. 為什麼 KVM 本身不實現網路功能？是希望使用者自己擴展嗎？




