Three techniques for performing I/O
1. programmed I/O
This processor issues an I/O command, on behalf of a process, to an I/O module; that process busy waits for the operation to be completed before proceeds.
2. Interrupt-driven I/O
This processor issues an I/O command on behalf of process, continues to execute subsequent instructions, and is interrupted by the I/O module when the latter has completed its work.
3. Direct memory access (DMA)
A DMA module controls the exchange of data between main memory and I/O module.
When the entire block is transferred then only DMA module is interrupted.