Добавлен: 20.10.2018
Просмотров: 824
Скачиваний: 6
приоритетов и выбирает для выполнения первый поток в самой
приоритетной непустой очереди. Отсюда следует, что потоки с меньшими
приоритетами будут выполняться, только если пусты все более
приоритетные очереди. Если допускается изменение приоритета, то
планировщик должен уметь перемещать поток в другую очередь в
соответствии с новым значением приоритета.
Схематично массив приоритетных очередей представлен на следующем
рисунке, где для удобства более приоритетные потоки собраны в левой части
массива, менее приоритетные – в правой, а сами приоритеты изменяются от 1
(максимум) до n (минимум). Условное обозначение «поток i.2» показывает,
что данный поток имеет приоритет i и стоит вторым по порядку в своей
очереди.
1
2
3
. . .
i
. . .
n
Для изменения приоритета и, возможно, кванта времени планировщику
необходима следующая информация: базовая величина приоритета и кванта,
время ожидания в очереди, накопленное время выполнения, интенсивность
обращения к операциям ввода/вывода. Вся эта информация должна
сохраняться в соответствующих структурах данных.
В итоге, планировщик включается в работу при возникновении одного из
следующих событий:
завершение кванта времени для текущего активного потока (сигнал от
системного таймера);
нормальное завершение кода текущего активного потока;
аварийное завершение кода текущего активного потока;
поток 1.3
поток 1.1
поток 1.2
поток 3.1
поток i.2
поток i.1
поток n.3
поток n.2
поток n.1
запрос активным потоком занятого системного ресурса;
появление среди готовых потоков более приоритетного потока.
При этом запускается код планировщика, который просматривает
приоритетные очереди и выбирает наиболее приоритетный поток. После
этого происходит собственно само переключение потоков:
формируется контекст прерываемого потока;
с
помощью
контекста
вновь
активизируемого
потока
восстанавливается необходимое состояние вычислительной системы, в
частности, загружаются необходимые значения во все регистры
процессора;
поскольку в регистр-счетчик команд из контекста заносится адрес
очередной подлежащей выполнению команды активизируемого потока,
то процессор переходит к выполнению кода нового потока точно с того
места, где оно было прервано.
Планирование потоков в системах реального времени строится на других
принципах. Поскольку для подобных систем наиболее важным показателем
является скорость работы, то планирование выполняется статически. Для
этого заранее строится так называемая таблица переключений, с помощью
которой в зависимости от текущего состояния вычислительного процесса
быстро и однозначно определяется запускаемый в данный момент поток.