Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС колоквиум.docx
Скачиваний:
5
Добавлен:
22.11.2019
Размер:
70.55 Кб
Скачать

6) Алгоритмы планирования процессов и потоков

Планирование процессов включает в себя решение следующих задач:

· определение момента времени для смены выполняемого процесса;

· выбор процесса на выполнение из очереди готовых процессов.

Различные алгоритмы планирования могут преследовать различные цели и

обеспечивать разное качество мультипрограммирования. Например, алгоритм дол-

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

определенного времени; другой обеспечивает максимально быстрое выполнение

«коротких» задач; третий обеспечивает преимущественное право на процессор-

ное время интерактивным приложениям. Именно особенности планирования про-

цессов в наибольшей степени определяют специфику ОС.

В большинстве ОС универсального назначения планирование осуществляется ди-

намически (on-line), то есть решения принимаются во время работы системы на ос-

нове анализа текущей ситуации. ОС не имеет никакой предварительной информа-

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

Статический тип планирования используется в специализированных системах, где

набор одновременно выполняемых задач определен заранее (например, в системах ре-

ального времени). Здесь решение о планировании принимается заранее (off-line).

Диспетчеризация заключается в реализации найденного в результате планиро-

вания решения, т.е. в переключении процессора с одного потока на другой, и сводит-

ся к следующему:

· сохранение контекста текущего процесса;

· загрузка контекста нового процесса;

· запуск нового процесса.

В отличие от планирования, осуществляемого программными средствами ОС, дис-

петчеризация реализуется совместно с аппаратными средствами процессора.

Примечание. В различных ОС компоненты, занимающиеся планированием, могут

называться по-разному: scheduler – распорядитель, или планировщик, – в Unix;

dispatcher – в Windows.

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

С самых общих позиций – по принципу освобождения процессора активным процессом

– существует два основных типа процедур планирования процессов: вытесняющие и

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

Невытесняющая многозадачность (non-preemptive multitasking) – способ планирова-

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

собственной инициативе, не отдаст управление планировщику операционной системы

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

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

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

для разработчиков приложений, хотя и может быть преимуществом при решении некото-

рого фиксированного набора задач (примером эффективного использования невытесня-

ющего планирования являются файл-серверы NetWare 3.x и 4.x, в которых благодаря

такому планированию достигнута высокая скорость выполнения файловых операций).

Вытесняющая многозадачность (preemptive multitasking) – способ, при котором ре-

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

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

При вытесняющем мультипрограммировании функции планирования процессов

целиком сосредоточены в операционной системе.

Почти во всех современных операционных системах, ориентированных на высоко-

производительное выполнение приложений (Unix, Windows NT/2000, OS/2, VAX/VMS),

реализованы вытесняющие алгоритмы планирования процессов, в которых механизм

планирования задач целиком сосредоточен в операционной системе. Программист пи-

шет свое приложение, не заботясь о том, что оно будет выполняться параллельно с

другими задачами. Операционная система определяет момент снятия с выполнения ак-

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

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

Алгоритмы, основанные на квантовании (классификация по принципу смены

активного процесса во времени)31

В соответствии с алгоритмами, основанными на квантовании, смена активного процесса

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

(или процесс перешел в состояние ожидания, или произошла ошибка, или процесс завер-

шился и покинул систему).

Процесс, который исчерпал свой квант, переводится в состояние готовности и ожи-

дает, когда ему будет предоставлен новый квант процессорного времени, а на вы-

полнение в соответствии с определенным правилом выбирается новый процесс из

очереди готовых. Это – концепция разделения времени. Ниже изображен граф со-

стояний процесса, соответствующий описанному алгоритму.

Алгоритмы, основанные на приоритетах (классификация по принципу выбо-

ра процесса на выполнение из очереди)

· Приоритет – это число, характеризующее степень привилегированности про-

цесса при использовании ресурсов вычислительной машины, в частности, процессор-

ного времени. Чем выше приоритет процесса, тем значительнее его привилегии и

тем меньше времени он будет проводить в очередях.

Приоритет может выражаться целым или дробным, положительным или отрица-

тельным значением. В некоторых ОС принято, что большее число обозначает боль-

ший приоритет, в других – наоборот (большее число означает меньший приоритет).

Приоритет может назначаться директивно администратором системы, например, в за-

висимости от важности работы, либо вычисляться самой ОС по определенным правилам.

В зависимости от возможности изменения приоритета в течение жизни потока раз-

личаются динамические и фиксированные приоритеты. В системах с динамическими

приоритетами изменения приоритета могут происходить по инициативе процесса, об-

ращающегося с вызовом к операционной системе; по инициативе пользователя, вы-

полняющего соответствующую команду; по инициативе ОС в зависимости от ситуа-

ции, складывающейся в системе.

· Существует две разновидности алгоритмов приоритетного планирования: обслужи-

вание с относительными приоритетами и обслуживание с абсолютными приоритетами.

В обоих случаях выбор процесса на выполнение из очереди осуществляется оди-

наково: выбирается процесс, имеющий наивысший приоритет. По-разному решается

проблема определения момента смены активного процесса.

Смешанные алгоритмы планирования (квантование с приоритетами)

Во многих операционных системах алгоритмы планирования построены с исполь-

зованием как квантования, так и приоритетов. Например, в основе планирования ле-

жит квантование, но величина кванта и/или порядок смены процессов и выбора про-

цесса из очереди готовых определяется приоритетами процессов.