Вытесняющее и невытесняющее планирование

Процесс планирования осуществляется частью ОС, называемой планировщиком. Он может принимать решения о выборе для исполнения нового процесса из числа находящихся в состоянии готовность в следующих 4 случаях:

1. когда процесс переводится из состояния исполнение в состояние закончил исполнение

2. когда процесс переводится из состояния исполнение в состояние ожидание

3. когда процесс переводится из состояния исполнение в состояние готовность (например, после прерывания от таймера)

4. когда процесс переводится из состояния ожидание в состояние готовность (завершилась операция ввода-вывода или произошло другое событие)

В случаях 1и 2 процесс, находящийся в состоянии исполнение не может дальше исполняться и ОС вынуждена осуществлять планирование, выбирая новый процесс для выполнения.

В случаях 3 и 4 планирование может как проводиться, так и не проводиться. Планировщик не вынужден обязательно принимать решение о выборе процесса для выполнения. Процесс, находящийся в состоянии исполнение может просто продолжить свою работу.

Если в ОС планирование осуществляется только в вынужденных ситуациях, говорят, что имеет место невытесняющее планирование.

Если планировщик принимает и вынужденные, и невынужденные решения, говорят о невытесняющем планировании.

Термин «вытесняющее планирование» возник потому, что исполняющийся процесс может быть вытеснен из состояния исполнение другим процессом.

Невытесняющее планирование проще организовано и минимум затрат на переключение контекста, но существует реальная опасность «полного захвата» процессора исполняющимся процессом (зацикливание). Выход в подобной ситуации: перезагрузка всей системы.

Вытесняющее планирование обычно используется в системах разделения времени. В этом режиме процесс может быть приостановлен в любой момент исполнения.