Вытесняющие и не вытесняющие алгоритмы диспетчеризации

Диспетчеризация без перераспределения процессорного времени, то есть не

вытесняющая многозадачность– это такой способ диспетчеризации процессов, при

котором активный процесс выполняется до тех пор, пока он сам, по своей инициативе, не

отдаст управление диспетчеру задач для выбора из очереди другого, готового к

исполнению процесса. Дисциплины обслуживания FCFS, SJN, SRT относятся к не

вытесняющим.

Диспетчеризация с перераспределением процессорного времени между задачами, то

есть вытесняющая многозадачность – это такой способ, при котором решение о

переключении процессора с выполнения одного процесса на выполнение другого

процесса принимается диспетчером задач, а не самой активной задачей. Механизм

диспетчеризации сосредоточен в самой ОС и программист не должен заботиться о

параллельном выполнении своего приложения с другими приложениями. Операционная

система выполняет следующие функции:

- определяет момент снятия с выполнения текущей задачи;

- сохраняет контекст текущей задачи в дескрипторе задачи;

- выбирает из очереди готовых к выполнению задач следующую;

- загружает контекст выбранной задачи;

- запускает выбранную задачу на исполнение.

Дисциплина RR и аналогичные ей относятся к вытесняющим.

При не вытесняющей многозадачности механизм распределения процессорного

времени распределен между ОС и прикладной программой. Прикладная программа

должна быть разделена на кванты, по окончанию которых с помощью системного вызова

управление передается супервизору ОС. Диспетчер задач формирует очереди и выбирает

задачу на исполнение.