Context Switching
Switching the CPU to another process requires saving the state of the old process and loading the saved state for the new process. This task is known as a context switch.
The context of a process is represented in the Process Control Block(PCB) of a process; it includes the value of the CPU registers, the process state and memory-management information. When a context switch occurs, the Kernel saves the context of the old process in its PCB and loads the saved context of the new process scheduled to run.
Context switch time is pure overhead, because the system does no useful work while switching. Its speed varies from machine to machine, depending on the memory speed, the number of registers that must be copied, and the existence of special instructions(such as a single instruction to load or store all registers). Typical speeds range from 1 to 1000 microseconds.
Context Switching has become such a performance bottleneck that programmers are using new structures(threads) to avoid it whenever possible.