Context Switching
Switching from one runnable task to another, is handled by context_switch() function defined in kernel/sched.c
context_switch() is called by schedule() when a new process has been selected to run. It does two things:
- Calls
switch_mm(), which is declared in<asm/mmu_context.h>, to switch the virtual memory mapping from the previous process’s to that of the new process. - Calls
switch_to(), declared in<asm/system.h>, to switch the processor state from the previous process’s to the current’s. This involves saving and restoring stack information and the processor registers and any other architecture-specific state that must be managed and restored on a per-process basis.