При предоставлении процессу вычислительных ресурсов происходит переключение контекста. Контекст выполнявшегося процесса запоминается, а восстанавливается контекст процесса, выбранного планировщиком.
Контекст переключается в четырех случаях:
1. Текущий процесс переходит в состояние сна, ожидая недоступного ресурса.
2. Текущий процесс завершает свое выполнение.
3. Если после пересчета приоритетов в очереди на выполнение есть более высокоприоритетный процесс.
4. Происходит пробуждение более высокоприоритетного процесса.
Первые два случая соответствуют добровольному переключению контекста и ядро вызывает процедуру переключения контекста из функций sleep или exit.
Третий и четвертый случаи переключения контекста происходят не по воле процесса, который в это время выполняется в режиме ядра и поэтому не может быть немедленно приостановлен, т.к. переключение контекста при выполнении в режиме ядра может произвести к нарушению целостности самой системы. В этой ситуации ядро устанавливает специальный флаг, который указывает, что в очереди находится более высокоприоритетный процесс, требующий предоставления вычислительных ресурсов. Перед переходом процесса из режима ядра в режим задачи ядро проверяет этот флаг и, если он установлен, вызывает функцию переключения контекста.
Переключение контекста является достаточно ресурсоемкой операцией. Помимо сохранения состояния регистров процесса, ядро вынуждено выполнить множество других действий.