Диспетчеризация задач с использованием динамических приоритетов

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

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

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

реализовать быстрое выполнение коротких задач и гарантировать выполнение любых

запросов. Эта дисциплина используется в ОС UNIX.

Каждый процесс имеет два атрибута приоритета, с учетом которого распределяется

процессорное время между исполняющимися задачами:

- текущий приоритет, на основе которого осуществляется планирование;

- заказанный относительный приоритет (nice number).

Более высокому значению текущего приоритета может соответствовать более

низкий фактический приоритет планирования.

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

диапазоне от 0 (низкий приоритет) до 127 (высокий приоритет). Процессы,

выполняющиеся в режиме задачи, имеют более низкий приоритет (0 – 65), чем в режиме

ядра (66 – 95, системный диапазон). Приоритеты в диапазоне 96 – 127 относятся к

процессам с фиксированным приоритетом.

Процессу, ожидающему недоступный в данный момент ресурс, система

присваивает приоритет сна (sleep) из диапазона системных приоритетов и связанное с

событием, вызвавшим это состояние. Когда процесс пробуждается, ему присваивается

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

вероятность выбора такого процесса на выполнение велика. Такой подход позволяет

быстро завершить системный вызов.

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

сохраненный перед выполнением системного вызова. Это может привести к снижению

приоритета и переключению контекста.

Для принятия решения о выборе следующего запускаемого процесса планировщику

необходима информация об использовании процессора. Эта составляющая приоритета

уменьшается обработчиком прерываний по таймеру по каждому тику таймера. Когда

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

Каждую секунду процессор пересчитывает приоритеты процессов, готовых к

выполнению, что приводит к перемещению процессов в более приоритетные очереди и

повышает вероятность их последующего запуска.

Данный алгоритм планирования обеспечивает:

- интересы низкоприоритетных процессов, так как в результате длительного

ожидания их приоритет и вероятность выполнения увеличиваются;

- более вероятный выбор интерактивных процессов по сравнению с

вычислительными.