Файл: 4. Состояния потоков и планирование их выполнения.pdf

Добавлен: 20.10.2018

Просмотров: 736

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

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

приоритетной  непустой  очереди.  Отсюда  следует,  что  потоки  с  меньшими 

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

приоритетные  очереди.  Если  допускается  изменение  приоритета,  то 

планировщик  должен  уметь  перемещать  поток  в  другую  очередь  в 

соответствии с новым значением приоритета.  

Схематично  массив  приоритетных  очередей  представлен  на  следующем 

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

массива, менее приоритетные – в правой, а сами приоритеты изменяются от 1 

(максимум)  до  n  (минимум).  Условное  обозначение  «поток  i.2»  показывает, 

что  данный  поток  имеет  приоритет  i    и  стоит  вторым  по  порядку  в  своей 

очереди. 

. . . 

. . . 

 

 

 

 

 

 

Для  изменения  приоритета  и,  возможно,  кванта  времени  планировщику 

необходима следующая информация: базовая величина приоритета и кванта, 

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

обращения  к  операциям  ввода/вывода.  Вся  эта  информация  должна 

сохраняться в соответствующих структурах данных. 

В итоге, планировщик включается в работу при возникновении одного из 

следующих событий: 

 

завершение кванта времени для текущего активного потока (сигнал от 

системного таймера); 

 

нормальное завершение кода текущего активного потока; 

 

аварийное завершение кода текущего активного потока; 

поток 1.3 

поток 1.1 

поток 1.2 

поток 3.1 

поток i.2 

поток i.1 

поток n.3 

поток n.2 

поток n.1 


background image

 

запрос активным потоком занятого системного ресурса; 

 

появление среди готовых потоков более приоритетного потока. 

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

приоритетные  очереди  и  выбирает  наиболее  приоритетный  поток.  После 

этого происходит собственно само переключение потоков: 

 

формируется контекст прерываемого потока; 

 

с 

помощью 

контекста 

вновь 

активизируемого 

потока 

восстанавливается необходимое состояние вычислительной системы, в 

частности,  загружаются  необходимые  значения  во  все  регистры 

процессора; 

 

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

очередной подлежащей выполнению команды активизируемого потока, 

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

места, где оно было прервано. 

Планирование потоков в системах реального времени строится на других 

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

является  скорость  работы,  то  планирование  выполняется  статически.  Для 

этого заранее строится так называемая таблица переключений, с помощью 

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

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