a) programmed-I/O
b) interrupt-driven I/O
c) DMA (direct-memory access)
2) What is the main difference between programmed I/O and interrupt-driven I/O?
3) What is the main difference between interrupt-driven I/O and DMA?
4) Assume special I/O instructions are used to fill I/O-controller registers. Why can't a user program use these instructions to communicate with the I/O device directly and "by-pass" the operating system's protection checking?
5) Assume that memory-mapped I/O is used. Since Load and Store instructions are used to communicate with the I/O-controller registers, why can't a user program communicate with the I/O device directly and "by-pass" the operating system's protection checking?