A context switch is the computing process of storing and restoring the state of a CPU (the context) such that multiple processes can share a single CPU resource. The context switch is an essential feature of a multitasking operating system. Context switches are usually computationally intensive and much of the design of operating systems is to optimize the use of context switches.

Context switches usually involve the following steps, assuming process P1 is running on the CPU and process P2 is the next process to run on the CPU:

  • Store the context of P1 somewhere in memory (usually on the stack of P1). The context of the CPU will contain the value of registers such as the program counter, processor control and general purpose registers.
  • Retrieve the context of P2 from memory (usually on the stack of P2).
  • Return to the location contained in the program counter (the line of code at which the original process was interrupted).

Some CPUs contain logic to allow several hardware contexts to simultaneously exist, eliminating the need to store and restore the CPU context to memory on context switch.