1. After I/O starts, control returns to user program only upon I/O completion
2. Wait instruction idles the CPU until the next interrupt
3. Wait loop (contention for memory access)
4. At most one I/O request is outstanding at a time, no simultaneous I/O processing
5. After I/O starts, control returns to user program without waiting for I/O completion
6. System call – request to the OS to allow user to wait for I/O completion
7. Device-status table contains entry for each I/O device indicating its type, address, and state
8. OS indexes into I/O device table to determine device status and to modify table entry to include interrupt