Context switching of threads
Context switching is switching of the central processing unit from one process or thread to another.
A process (also sometimes referred to as a task) is an executing (i.e., running) instance of a program. In Linux, threads are lightweight processes that can run in parallel and share an address space and other resources with their parent processes (i.e., the processes that created them).
A context is the contents of a CPU’s registers and program counter at any point in time. A register is a small amount of very fast memory inside of a CPU that is used to speed the execution of computer programs by providing quick access to commonly used values, generally those in the midst of a calculation. A program counter is a specialized register that indicates the position of the CPU in its instruction sequence and which holds either the address of the instruction being executed or the address of the next instruction to be executed, depending on the specific system.
Context switching can be described in more detail performing the following activities with regard to processes/threads on the CPU:
- Suspending the progression of one process and storing the CPU’s state (i.e., the context) for that process somewhere in memory
- Retrieving the context of the next process from memory and restoring it in the CPU’s registers
- Returning to the location indicated by the program counter (i.e., returning to the line of code at which the process was interrupted) in order to resume the process.