I/O
Input/output: moving data between a program and the outside world (disk, network, devices), often slower than CPU work and a common source of waiting.
Definition
I/O (input/output) is moving data between a program and the outside world: disks and filesystems, networks, terminals, devices, and sometimes other processes.
Why I/O changes how programs behave
Compared to CPU execution, I/O is often slower and has more variability. That means many “performance problems” are actually “waiting problems”.
When a program is waiting on I/O, it may look like it’s “hung” even though it’s just blocked until:
- the disk returns data
- the network delivers a response (or times out)
- a pipe or network socket becomes readable or writable
How the OS is involved
I/O is typically initiated in user space, but carried out by the kernel via system calls (directly or through libraries). That’s why permissions, resource limits, and kernel behavior can change I/O outcomes between environments.