Input/Output (I/O)
Three techniques are possible for I/O operations:
- O (busy waiting, process is still RUNNING)
- O (process is BLOCKED)
- Direct Memory Access (process is BLOCKED too?)

In practice, which I/O method is used?
For example, when I write a program to grab an image from a camera, is it interrupt-driven or programmed I/O?
- It’s DMA-based I/O, with interrupts (or sometimes polling) used to tell the CPU “a frame/buffer is ready”. Disk / network cards / GPUs / cameras / audio interfaces
USB keybaord / mouse is polling.
What are the different ways to connect I/O to computer?
- Through a bus, see Operating System
- https://www.quora.com/How-do-computers-handle-I-O-devices
What about USB?
USB devices connect to the CPU through a USB controller, which is interfaced with the CPU via system buses like PCI or PCIe. So it’s actually PCIe.