Вытесняющие и не вытесняющие алгоритмы диспетчеризации
Алгоритмы диспетчеризации
Особенности алгоритмов диспетчеризации
Особенности алгоритмов диспетчеризации
23.50K
Category: informaticsinformatics

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

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

2. Алгоритмы диспетчеризации

Диспетчеризация без перераспределения процессорного времени, то есть не
вытесняющая многозадачность (non-preemptive multitasking) – это такой способ
диспетчеризации процессов, при котором активный процесс выполняется до тех пор,
пока он сам, что называется «по собственной инициативе», не отдаст управление
диспетчеру задач для выбора из очереди другого, готового к выполнению процесса
или треда.
Дисциплины обслуживания FCFS, SJN, SRT относятся к не вытесняющим.
Диспетчеризация с перераспределением процессорного времени между задачами,
то есть вытесняющая многозадачность (preemptive multitasking) – это такой способ,
при котором решение о переключении процессора с выполнения одного процесса на
выполнение другого процесса принимается диспетчером задач, а не самой активной
задачей.
При вытесняющей многозадачности механизм диспетчеризации задач целиком
сосредоточен в операционной системе (от программиста, разрабатывающего
приложения ничего не требуется, чтобы поддерживать многозадачность). При этом
операционная система выполняет следующие функции:
– Определяет момент снятия с выполнения текущей задачи
– Сохраняет ее контекст в дескрипторе задачи
– Выбирает из очереди готовых задач следующую
– Запускает ее на выполнение, предварительно загрузив ее контекст
Дисциплина RR и многие другие, построенные на ее основе, относятся к вытесняющим.

3. Особенности алгоритмов диспетчеризации

При не вытесняющей многозадачности механизм распределения процессорного
времени распределен между системой и прикладными программами. Прикладная
программа, получив управление от операционной системы, сама определяет
момент завершения своей очередной итерации и передает управление супервизору
ОС с помощью соответствующего системного вызова.
Для пользователей это означает, что управление системой может теряться на
некоторый произвольный период времени, который определяется процессом
выполнения приложения. Если приложение тратит слишком много времени на
выполнение какой-либо работы (например, на форматирование диска),
пользователь не может переключиться с этой задачи на другую задачу (например,
на текстовый или графический редактор, в то время как форматирование
продолжалось бы в фоновом режиме). Эта ситуация нежелательна, так как
пользователи обычно не хотят долго ждать, когда машина завершит свою задачу.
Поэтому разработчикам ПО для ОС с не вытесняющей многозадачностью приходится
возлагать функции диспетчера задач «на себя», т.е. программы должны выполнять
свои задачи частями. Например программа форматирования будет передавать
управление системе после форматирования одной дорожки диска и ждать, пока ее
снова не поставят на выполнение.
Такой подход существенно затрудняет разработку программ и требует высокой
квалификации программиста.

4. Особенности алгоритмов диспетчеризации

Если приложение зависнет, то это может привести к краху всей системы (оно не сможет
вернуть управление назад всей системе). Пример ОС Windows 3.x.
В системах с вытесняющей многозадачностью такие ситуации, исключены, так как
центральный механизм диспетчеризации, во-первых, обеспечивает все задачи
процессорным временем, а во-вторых, дает возможность иметь надежные механизмы
для мониторинга вычислений и позволяет снять зависшую задачу с выполнения.
Распределение функций диспетчеризации между системой и приложениями не всегда
является недостатком, потому что дает возможность разработчику приложений самому
проектировать алгоритм распределения процессорного времени, наиболее подходящий
для данного фиксированного набора задач:
1) Разработчик сам определяет в программе момент времени отдачи управления
(исключаются нерациональные прерывания программ в «неудобные» для них моменты
времени).
2) Легко разрешаются проблемы совместного использования данных. Задача во время
каждой итерации использует их монопольно и уверена, что на протяжении этого
периода никто другой не изменит эти данные.
Примером эффективного использования не вытесняющей многозадачности является
сетевая операционная система Novell NetWare, в которой в значительной степени
благодаря этому достигнута высокая скорость выполнения файловых операций. Менее
удачным оказалось использование не вытесняющей многозадачности в операционной
среде Windows 3.x
English     Русский Rules