Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
41
Добавлен:
30.04.2013
Размер:
16.33 Mб
Скачать

Планирование в unix.

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

Планировщик процессов в системе Unix принадлежит к общему классу планировщиков, работающих по принципу "карусели с многоуровневой обратной связью". В соответствии с этим принципом ядро предоставляет процессу ресурсы ЦП на квант времени, по окончанию которого выгружает этот процесс и возвращает его в одну из нескольких очередей, регулируе­мых приоритетами. Прежде чем процесс завершится, ему может потре­боваться несколько раз пройти Через цикл с обратной связью. Когда ядро выполняет переключение задачи восстанавливает контекст процесса, процесс возобновляет выполнение с точки приостановки.

В каждой записи таблицы процессов есть поле приоритета, используемое планировщиком процессов. Приоритет процесса в режиме задачи за­висит от того, как этот процесс перед этим использовал ресурсы ЦП. Все допустимые численные значения приоритета можно разделить на два клас­са: приоритеты выполнения в режиме ядра и приоритеты выполнения в режиме задачи. Наивысшим значением приоритета в системе является ну­левое значение. Таким образом, нулевой приоритет выполнения в режиме задачи выше приоритета, имеющего значение, равное 1, и т.д. Приоритеты выполнения в режиме задачи имеют верхнее пороговое значение, приоритеты выполнения в режиме ядра имеют нижнее пороговое значение

Непосредственно перед переходом процесса в состояние приостановки ядро назначает ему приоритет исходя из причины приостановки. Приоритет не зависит от динамических характеристик процесса (продолжительности ввода-вывода или времени счета), напротив, это постоянная величина, жестко устанавливаемая в момент приостановки и зависящая только от причины перехода процесса в данное состояние.

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

Типы многозадачности.

По еще одной классификации все множество алгоритмов планирования процессов может быть разделено на две группы:

Non preernptive multitasking – не вытесняющая многозадачность -это

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

Preemptive multitaskiпg - вытесняющая многозадачность -это такой

способ управления, при котором решение о переключении процессора с

выполнения одного процесса на выполнение другого процесса принимает­ся планировщиком операционной системы.

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

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

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

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

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

Исполнение некоторой задачи с точки зрения пользователя означает, что система "замирает" на некоторое время, период которого определяется не ОС, а сложностью задачи, которая выполняется. При этом пользователь не может выполнить никаких действий в системе и должен ждать, пока задача выполнится до конца.

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