98
КОМПОНЕНТЫ И ТЕХНОЛОГИИ •
№ 5 '2011
компоненты
микроконтроллеры
В программе создана Задача 1 с приорите-
том 2 и Задача 2 с приоритетом 1. Задача 1
повышает приоритет Задачи 2 так, чтобы
он превысил приоритет Задачи 1. Задача 2,
в свою очередь, понижает свой же приоритет
так, чтобы он стал ниже приоритета Задачи 1.
Задача 1, как и Задача 2, не переходит в блоки-
рованное состояние. Обе задачи поочередно
получают процессорное время за счет перио-
дического изменения приоритета Задачи 2
(он становится то ниже, то выше приоритета
Задачи 1).
В момент запуска планировщика обе за-
дачи готовы к выполнению (в
учебной
программе № 1 они вообще не переходят
в блокированное состояние, то есть либо вы-
полняются, либо находятся в состоянии го-
товности к выполнению). Управление полу-
чает Задача 1, так как ее приоритет (равен 2)
больше, чем приоритет Задачи 2. После
сигнализации о своей работе она вызывает
API-функцию
vTaskPrioritySet(), вследствие
чего Задача 2 получает приоритет выше, чем
Задача 1 (он становится равным 3).
Вызов
vTaskPrioritySet() помимо изменения
приоритета приводит к тому, что управление
получает планировщик, который запускает
Задачу 2, так как приоритет у нее теперь выше.
Получив управление, Задача 2 сигнализиру-
ет о своем выполнении. После чего она пони-
жает свой приоритет на две единицы, так, что-
бы он стал меньше приоритета Задачи 1 (стал
равен 1). После этого управление снова по-
лучает планировщик и так далее. Разделение
процессорного времени в учебной программе
№ 1 показано на рис. 1, а результат ее выпол-
нения — на рис. 2.
Следует отметить, что задачи сменяют друг
друга с частотой, превышающей частоту си-
стемных квантов. Частота их следования зави-
сит от быстродействия рабочей станции, и со-
общения выводятся на экран с очень большой
скоростью, поэтому для того, чтобы увидеть
изображение на дисплее, соответствующее
рис. 2, необходимо искусственно приостано-
вить выполнение учебной программы.
Достарыңызбен бөлісу: