I/O Scheduling
How it works
- Process 發出 blocking I/O system call。
- Kernel 把 request 放入該 device 的 wait queue。
- I/O scheduler 根據 device 特性、request 位置、priority、fairness policy 重排 queue。
- Device idle 或上一個 request 完成時,kernel / driver 取出下一個 request 執行。
- I/O 完成後,對應 process 被喚醒或 async completion 被記錄。
Device-Status Table
當 kernel 支援 asynchronous I/O 或同時有很多 pending I/O 時,它需要資料結構追蹤每個 device 的狀態。Device-status table 會記錄:
- device type。
- device address。
- device state,例如 idle / busy / failed。
- 如果 busy,正在處理哪個 request。
- wait queue 中還有哪些 pending requests。
這讓 kernel 可以知道 request 應該排在哪裡、何時可以送給 driver、完成時要通知誰。