.
Начертательная геометрия Геометрическое черчение Инженерная графика Интегралы Математический анализ Матрицы Производные Векторная алгебра

 

8.3. Планирование в мультипрограммных системах

 

Все задания (процессы), находящиеся в системе с мультипрограммированием, конкурируют из-за процессорного времени. Кроме процессов пользователя, имеются и системные процессы, для выполнения которых нужно процессорное время. Имеются, как правило, две очереди процессов:

·  очередь готовых процессов – активные процессы, ожидающие кванта времени ЦП (Ог);

·  очередь заблокированных процессов, ожидающих выполнения какого-нибудь события (Об).


Пусть P – процессор, тогда схема планирования ресурса-процессора выглядит следующим образом (рис. 8.3).

 

Рис. 8.3. Схема планирования ресурса

 

Каждый процесс Pi может находиться в одном из состояний: готовом, заблокированном или выполняемом. Если pΠОг и ему выделен квант tpi процессорного времени, то он будет выполняться, пока не произойдет одно из событий:

·  истечет его квант времени;

·  процесс будет заблокирован;

·  процесс будет вытеснен более приоритетным процессом;

·  процесс будет завершен.

Если произошло одно из указанных событий, процесс переводится либо в очередь Ог, либо в очередь Об, либо оставляет систему. По окончании блокировки процессы переводятся из очереди Об в Ог. Алгоритм планирования для такой системы включает в себя способ выбора готового процесса из заданной совокупности процессов и способ вычисления величины кванта tpi для него.

Каждому pΠОг поставлен в соответствие приоритет – целое число, учитывающее важность процесса pi, занимаемый им объем памяти, срочность выполнения и объем I/О, а также внешний приоритет, назначаемый пользователем. На определение приоритета влияют также и динамические характеристики: общее время ожидания; ресурсы, находящиеся в распоряжении процесса; процессорное время, полученное в последний раз; общее время нахождения процесса в системе и т. д. Отсюда следует, что приоритет процесса может перевычисляться несколько раз за время его жизни.

Внешний приоритет играет важную роль при переводе pi в активное состояние и распечатке полученных результатов.

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

 

8.3.1. Планирование по наивысшему приоритету

 

В этом методе HPF (highest priority first) процессор предоставляется тому процессу, который имеет наивысший приоритет. И если не допускается вытеснение процесса, то он выполняется до тех пор, пока не выполнится или не будет заблокирован. Если вытеснение разрешено, то поступивший процесс с более высоким приоритетом прервет выполняющийся процесс и ему будет передано управление на выполнение. Вытесненный процесс перейдет в очередь готовых процессов. Если процессор освободился, то ему из Ог назначается процесс с наивысшим приоритетом.

Если очередь Ог рассортирована по приоритетам, то выбрать первый элемент просто. Если же такой сортировки нет (а при динамическом изменении приоритетов ее всегда нет), необходимо по истечении некоторого времени T проводить сортировку всей очереди Ог или его некоторой части. Здесь возможны различные модификации.

В стратегии HPF необходимо задать те параметры, которые лягут в основу формирования приоритета. Иногда выбирается первым самое короткое задание SJF (shortest job first). Здесь, как правило, используется ожидаемое время выполнения процесса, ибо точное время известно очень редко. При этом надо помнить, что некоторые пользователи занижают время выполнения процесса.

В SJF возможны также варианты с вытеснением. В этом случае надо следить, чтобы не слишком часто процессы вытесняли друг друга, ибо и на вытеснение нужно процессорное время. Кроме того, если до завершения процесса осталось мало времени, то его вытеснять не рекомендуется. Однако здесь (особенно если разрешено вытеснение) особое внимание должно быть обращено на выполнение частично обработанных процессов.

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

Количество различных правил вычисления приоритета неограничено. Стратегия дает многим процессам хорошее обслуживание, тем не менее процессы с низким приоритетом могут ждать очень долго. Это во многих случаях неприемлемо, например, при работе в режиме реального времени.

 

8.3.2. Метод круговорота (карусель)

 

Простой круговорот (round robin, RR) не использует никакой информации о приоритетах. Порядок обслуживания процессов следующий: первый пришедший процесс получает квант времени to и встает в очередь на обслуживание, если только он себя не заблокирует. Поэтому при наличии N процессов в системе для обслуживания будем считать, что скорость работы процессора равна V/N, где V – истинное быстродействие процессора. Если t® ¥, то стратегия SRR (simple round robin) сводится к стратегии FIFO (first in first out). С уменьшением to улучшается обслуживание коротких процессов. Но to не должно быть слишком мало: если оно становится сравнимым по порядку со временем переключения с одного процесса на другой, то задержка в выполнении процессов становится заметной. Метод RR часто применяется в системах разделения времени (СРВ) с большим числом пользователей. Системы СРВ должны гарантировать каждому пользователю приемлемое время ответа. Время ответа в случае N пользователей » t0N.

Одна из модификаций метода – raund robin cicle (RRC). В нем в качестве to для гарантиивыбирается максимально возможное время ожидания. Суть метода: формируется множество Pг – множество готовых для выполнения процессов. Пусть мощность этого множества No. Выбирается время цикла Тц для очереди Pг, равное максимально достижимому времени ответа. Тогда t= Тц/No, to вычисляется для каждого прохождения цикла Pг. Процессы, вновь появляющиеся для обслуживания в Pг, не включаются в очередь до завершения цикла. Если to оказывается слишком маленьким (сравнимым со временем переключения процессов), то выбирается некоторая нижняя оценка для величины to, что позволяет сократить потери на переключение процессов.

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

Можно выделить ведущую и фоновую очередь готовых процессов в зависимости от вероятности затребования определенного количества квантов времени ЦП для их завершения.

 

8.3.3. Очереди с обратной связью

 

Основной алгоритм FB (feedback) очередей с обратной связью использует n очередей, каждая из которых обслуживается в порядке поступления. Новый процесс поступает в первую очередь, затем после получения кванта времени он переходит в очередь со следующим номером и так далее после очередного кванта времени. Время процессора планируется таким образом, что он обслуживает непустую очередь с наименьшим номером. В методе FB каждый, вновь поступающий на обслуживание процесс получает (в неявном виде безусловно и в соответствии со стратегией обслуживания) высокий приоритет и выполняется подряд в течение такого количества квантов времени, пока не придет следующий процесс. Но если приход нового процесса задерживается, то текущий процесс не может проработать большее количество квантов, чем предыдущий процесс.

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

Для уменьшения числа очередей можно разрешить каждому процессу фиксированное, большее единицы число раз проходить цикл, прежде чем переходить в очередь с другим номером. При этом очереди, упорядоченные по FB, обслуживаются по правилу круговорота внутри каждой очереди и по тому же правилу распределяется время процессора между очередями.

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

Если мы желаем использовать информацию о приоритетах, то можно применить круговорот со смещением, когда каждому процессу выделяется квант времени ЦП в зависимости от внешнего приоритета.

 

8.3.4. Многоуровневое планирование

 

В большинстве современных систем процессоры взаимодействуют посредством прерываний. В ЦП прерывание происходит, если истекает отведенный квант времени, или канал заканчивает работу, или выполняемая программа пытается осуществить ввод-вывод. Затем управление передается СУПЕРВИЗОРу, который после осуществления некоторых действий (разблокирование или порождение процесса, запуск канала и т. д.) передает процессор новому процессу из очереди. Следует отметить, что эту работу надо проделывать каждый раз при появлении прерываний, что требует больших затрат времени. Поэтому предлагается метод многоуровневого планирования, который сохраняет всю информацию о процессах, выполняет перевычисления приоритета и т. д., но делает это не очень часто.

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

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

Краткосрочный планировщик вставляет процесс в очередь. Здесь возможен анализ состояния процесса. Однако, так как процессы ставятся в очередь довольно часто, краткосрочный планировщик не должен вносить сложных изменений в состояние и приоритет процесса, оставляя подобные действия для долгосрочного планировщика. Долгосрочный планировщик может осуществлять глубокий анализ состояния процессов.

Если наперед известна частота появления вызовов на каждом уровне, то, пользуясь многоуровневым планированием, мы можем ввести ограничения на допустимый объем вычислений на каждом уровне, что во многом определяет алгоритмы планирования на каждом уровне.

Рассмотренные нами алгоритмы планирования представляют собой ряд приемов распределения процессорного времени между процессами. Однако многие из них могут быть с успехом применены и к распределению других ресурсов в операционных системах.

Какими бы ни были методы планирования, должны существовать способы доказательства эффективности этих методов или установления источников потери эффективности.

На главную