Компоненты и технологии • №2 '2011 компоненты


В этой статье будет продолжено изучение FreeRTOS — операционной систе-



Pdf көрінісі
бет32/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   28   29   30   31   32   33   34   35   ...   129
Kurniz

В этой статье будет продолжено изучение FreeRTOS — операционной систе-
мы для микроконтроллеров. Здесь описан процесс принудительного изме-
нения приоритета задач в ходе их выполнения, показано, как динамически 
создавать и уничтожать задачи. рассмотрен вопрос о том, как расходуется 
память при создании задач. Подведен итог по вытесняющей многозадачности 
во FreeRTOS и рассказано о стратегии назначения приоритетов задачам под 
названием Rate Monotonic Scheduling. Далее мы обсудим тему кооператив-
ной многозадачности, ее преимущества и недостатки и приведем пример про-
граммы, использующей кооперативную многозадачность во FreeRTOS. Автор 
уделил внимание и альтернативным схемам планирования: гибридной много-
задачности и вытесняющей многозадачности без разделения времени.
FreeRTOS — 
операционная система
для микроконтроллеров
Продолжение. Начало в № 2`2011


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, необходимо искусственно приостано-
вить выполнение учебной программы.


Достарыңызбен бөлісу:
1   ...   28   29   30   31   32   33   34   35   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет