Операционные системы: архитектура и управление процессами. Макаров П.С. - 60 стр.

UptoLike

Составители: 

60
Вытесняющие и невытесняющие алгоритмы планирования
Существуют два основных типа процедур планирования процессов вы-
тесняющие (preemptive) иневытесняющие (non-preemptive).
Non-preemptive multitasking не вытесняющая многозадачность это
способ планирования процессов, при котором активный процесс выполняется
до тех пор, пока он сам, по собственной инициативе, не отдаст управление пла-
нировщику операционной системы для того, чтобы тот выбрал из очереди дру-
гой, готовый к выполнению процесс.
Preemptive multitasking вытесняющая многозадачность это такой
способ, при котором решение о переключении процессора с выполнения одного
процесса на выполнение другого процесса принимается планировщиком опера-
ционной системы, а не самой активной задачей.
Понятия preemptive и non-preemptive иногда отождествляются с понятия-
ми приоритетных и бесприоритетных дисциплин, что совершенно неверно, а
также с понятиями абсолютных и относительных приоритетов, что неверно от-
части. Вытесняющая и невытесняющая многозадачность это более широкие
понятия, чем типы приоритетности. Приоритеты задач могут как использовать-
ся, так и не использоваться и при вытесняющих, и при невытесняющих спосо-
бах планирования. Так в случае использования приоритетов дисциплина отно-
сительных приоритетов может быть отнесена к классу систем с невытесняющей
многозадачностью, а дисциплина абсолютных приоритетов к классу систем с
вытесняющей многозадачностью. А бесприоритетная дисциплина планирова-
ния, основанная на выделении равных квантов времени для всех задач, отно-
сится к вытесняющим алгоритмам.
Основным различием между preemptive и non-preemptive вариантами
многозадачности является степень централизации механизма планирования за-
дач. При вытесняющей многозадачности механизм планирования задач цели-
ком сосредоточен в операционной системе, и программист пишет свое прило-
жение, не заботясь о том, что оно будет выполняться параллельно с другими
задачами. При этом операционная система выполняет следующие функции: оп-
ределяет момент снятия с выполнения активной задачи, запоминает ее кон-
текст, выбирает из очереди готовых задач следующую и запускает ее на выпол-
нение, загружая ее контекст.
При невытесняющей многозадачности механизм планирования распреде-
лен между системой и прикладными программами. Прикладная программа, по-
лучив управление от операционной системы, сама определяет момент заверше-
ния своей очередной итерации и передает управление ОС с помощью какого-
либо системного вызова, а ОС формирует очереди задач и выбирает в соответ-
ствии с некоторым алгоритмом (например, с учетом приоритетов) следующую
задачу на выполнение. Такой механизм создает проблемы как для пользовате-
лей, так и для разработчиков.
Для пользователей это означает, что управление системой теряется на
произвольный период времени, который определяется приложением (а не поль-