The document discusses three different I/O techniques:
1. Programmed I/O - The CPU controls the entire I/O process and must periodically check device status, wasting CPU time.
2. Interrupt-driven I/O - The CPU issues a command and is freed up while the device operates. The device then interrupts the CPU when ready.
3. Direct memory access (DMA) - Allows devices to communicate directly with memory without involving the CPU, using a DMA controller. This overcomes CPU waiting and avoids repeated status checks.