I/O Scheduling

How it works

  1. Process 發出 blocking I/O system call。
  2. Kernel 把 request 放入該 device 的 wait queue。
  3. I/O scheduler 根據 device 特性、request 位置、priority、fairness policy 重排 queue。
  4. Device idle 或上一個 request 完成時,kernel / driver 取出下一個 request 執行。
  5. 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、完成時要通知誰。