23.Алгоритмы планирования потоков, основанные на
относительных и абсолютных приоритетах.
Важной
концепцией, лежащей в основе многих вытесняющих алгоритмов планирования,
является приоритетное обслуживание. Приоритетное обслуживание предполагает
наличие у потоков некоторой изначально известной характеристики — приоритета,
на основании которой определяется порядок их выполнения. Приоритет — это число,
характеризующее степень привилегированности потока при использовании ресурсов
вычислительной машины, в частности процессорного времени: чем выше приоритет,
тем выше привилегии, тем меньше времени будет проводить поток в очередях.
Приоритет
может выражаться целым или дробным, положительным или отрицательным значением.
В некоторых ОС принято, что приоритет потока тем выше, чем больше (в
арифметическом смысле) число, обозначающее приоритет. В других системах,
наоборот, чем меньше число, тем выше приоритет.
Существуют
две разновидности приоритетного планирования: обслуживание с относительными
приоритетами и обслуживание с абсолютными приоритетами.
В
обоих случаях выбор потока на выполнение из очереди готовых осуществляется
одинаково: выбирается поток, имеющий наивысший приоритет. Однако проблема
определения момента смены активного потока решается по-разному. В системах с
относительными приоритетами активный поток выполняется до тех пор, пока он сам
не покинет процессор, перейдя в состояние ожидания (или же произойдет ошибка,
или поток завершится). На рис. 5.2.4, а показан граф состояний потока в системе
с относительными приоритетами.
В системах с
абсолютными приоритетами выполнение активного потока прерывается кроме
указанных выше причин, еще при одном условии: если в очереди готовых потоков
появился поток, приоритет которого выше приоритета активного потока. В этом
случае прерванный поток переходит в состояние готовности (рис. 5.2.4, б).
В
системах, в которых планирование осуществляется на основе относительных
приоритетов, минимизируются затраты на переключения процессора с одной работы
на другую. С другой стороны, здесь могут возникать ситуации, когда одна задача
занимает процессор долгое время. Ясно, что для систем разделения времени и
реального времени такая дисциплина обслуживания не подходит: интерактивное
приложение может ждать своей очереди часами, пока вычислительной задаче не
потребуется ввод-вывод. А вот в системах пакетной обработки (в том числе
известной ОС OS/360) относительные приоритеты используются широко.