КОМПОНЕНТЫ И ТЕХНОЛОГИИ •
№ 9 '2011
104
компоненты
микроконтроллеры
API-функций. Результат выполнения модифицированной учебной
программы № 2 приведен на рис. 7.
На рис. 7 видно, что теперь выполняется только низкоприоритет-
ная служебная сопрограмма. Высокоприоритетная Сопрограмма № 1
не получает процессорного времени, даже несмотря на то, что она
вышла из блокированного состояния, когда Прерывание № 1 поме-
стило сообщение в Очередь № 1.
Рассмотрим реальную программу, в которой высокоприоритетная
сопрограмма отвечает за обработку события, ожидая, когда в очереди
появится сообщение. Сообщение в очередь помещает обработчик пре-
рывания, которое возникает при наступлении события.
Пусть в текущий момент выполняется низкоприоритетная со-
программа и происходит это прерывание. Обработчик прерывания
помещает сообщение в очередь. Однако высокоприоритетная со-
программа не получит управления сразу же после выполнения обра-
ботчика прерывания. Высокоприоритетная сопрограмма вынуждена
ожидать, пока низкоприоритетная сопрограмма отдаст управление,
вызвав блокирующую API-функцию.
Таким образом, время реакции системы на событие зависит от того,
насколько быстро выполняющаяся в данный момент сопрограмма вы-
полнит переключение на другую сопрограмму. Высокоприоритетная со-
программа
вынуждена ожидать, пока выполняется низкоприоритетная.
С точки зрения времени реакции системы на внешние события
кооперативная многозадачность не позволяет гарантировать задан-
ное время реакции, что является одним из основных недостатков
кооперативной многозадачности.
Выводы
Подводя итог, можно выделить следующие тезисы относительно со-
программ во FreeRTOS:
Выполняются в режиме кооперативной многозадачности.
•
Значительно экономят оперативную память.
•
Автоматически устраняют проблему реентерабельности функций.
•
Не гарантируют заданного времени реакции системы на прерывание.
•
При написании сопрограмм следует придерживаться строгих огра-
•
ничений.
Бедный набор API-функций для работы с сопрограммами.
•
Таким образом, использование сопрограмм может быть оправда-
но лишь в том случае, если преследуется цель написания програм-
мы, работающей под управлением FreeRTOS, на микроконтроллере,
который не имеет достаточного объема оперативной памяти для
реализации программы с использованием задач.
n
Достарыңызбен бөлісу: