I/O Protection

Basic Concept

I/O protection 是 OS 防止 user process 直接或非法操作 I/O device 的機制。device controller 可以改變硬體狀態、讀寫 storage、發送 network packets、甚至讓系統 crash;如果任意 process 都能直接執行 I/O instructions 或修改 memory-mapped device registers,系統就無法保護資料與硬體。

因此現代 OS 通常要求:user process 不能直接控制 device,只能透過 system call 請 kernel 代為執行 I/O。

Privileged I/O Instructions

OS 會把 I/O instructions 定義成 privileged instructions。只有 kernel mode 可以執行它們。User process 若想做 I/O,必須呼叫 system call

Protecting Memory-Mapped I/O

如果 device registers 或 device memory 被映射到 address space,OS 也必須用 memory protection 控制誰能 access。否則 user process 只要寫某個 address,就可能直接改 controller state。

因此 memory-mapped I/O region 通常只映射給 kernel 或 privileged process。若需要讓 user process 直接使用某段 device memory,例如 graphics buffer,kernel 也會控制 mapping 範圍和 access permission。