In a nutshell
A running program passes through a fixed set of life stages. It is created (New), admitted to a line of programs waiting for the CPU (Ready), and eventually given the CPU to actually run (Running). From running it may pause for slow work like a disk read (Waiting), get bumped off when its time slice ends (back to Ready), or finish (Terminated). With one CPU core, only one process runs at any instant.