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


http://ru.wikipedia.org/wiki/Взаимная_блокировка



Pdf көрінісі
бет93/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   89   90   91   92   93   94   95   96   ...   129
Kurniz

http://ru.wikipedia.org/wiki/Взаимная_блокировка
9. 
http://www.ee.ic.ac.uk/t.clarke/rtos/lectures/RTOSlec2x2bw.pdf


97
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 9 '2011
www.kite.ru
компоненты
микроконтроллеры
Андрей Курниц
kurnits@stim.by
Что представляет собой 
сопрограмма?
В предыдущих публикациях [1] мы говори-
ли о FreeRTOS как о многозадачной операци-
онной системе, и в центре нашего внимания 
находилась задача (task) — базовая единица 
программы, работающей под управлением 
FreeRTOS. Речь шла о том, что программа, 
работающая под управлением FreeRTOS, 
разбивается на совокупность задач. Задача 
представляет собой отдельный поток команд 
процессора и реализуется в виде функции 
языка Си. Каждая задача отвечает за неболь-
шую часть функциональности всей програм-
мы. Каждая задача выполняется независимо 
от остальных, но взаимодействует с осталь-
ными задачами через механизмы межзадач-
ного взаимодействия.
Начиная с версии v4.0.0 во FreeRTOS по-
явилась поддержка сопрограмм (co-routines). 
Сопрограмма сходна с задачей, она также пред-
ставляет собой независимый поток команд 
процессора, и ее можно использовать как базо-
вую единицу программы. То есть программа, 
работающая под управлением FreeRTOS, мо-
жет состоять из совокупности сопрограмм.
Когда следует использовать сопрограммы?
Главное преимущество сопрограмм перед 
задачами — это то, что использование со-
программ позволяет достичь значительной 
экономии оперативной памяти по сравне-
нию с использованием задач.
Каждой задаче для корректной работы 
ядро выделяет участок памяти, в которой 
размещаются стек задачи и структура управ-
ления задачей (Task Control Block). Размер 
этого участка памяти за счет размещения 
в нем стека оказывается значительным. Так 
как объем оперативной памяти в микрокон-
троллерах ограничен, то его может оказать-
ся недостаточно для размещения всех задач.
В таких случаях одним из возможных ре-
шений будет замена всех (или части) задач 
на сопрограммы. В этом случае программа 
будет представлять собой совокупность неза-
висимых друг от друга и взаимодействую-
щих друг с другом сопрограмм.
Сопрограммам по сравнению с задачами 
присущ ряд существенных ограничений, по-
этому использование сопрограмм оправдано 
только в случаях, когда объема оперативной 
памяти оказывается недостаточно. Следует 
отметить, что в программе допускается со-
вместное использование как задач, так и со-
программ.
Особенности сопрограмм:
1. Использование стека. Все сопрограммы 
в программе используют один и тот же 
стек, это позволяет добиться значительной 
экономии оперативной памяти по сравне-
нию с использованием задач, но налагает 
ряд ограничений при программировании 
сопрограмм.
2. Планирование и приоритеты. Сопрограммы 
в отличие от задач выполняются в режиме 
кооперативной многозадачности с приори-
тетами. Кооперативная многозадачность 
в отношении сопрограмм автоматически 
устраняет проблему реентерабельности 
функций, но негативно сказывается на вре-
мени реакции микроконтроллерной систе-
мы на внешние события.
3. Сочетание с задачами. Сопрограммы мо-
гут выполняться одновременно с задачами, 
которые обслуживаются планировщиком 
с вытесняющей многозадачностью. При 
этом задачи выполняются в первую очередь, 
и только если нет готовых к выполнению за-
дач, процессор занят выполнением сопро-
грамм. Важно, что во FreeRTOS не существу-
ет встроенного механизма взаимодействия 
между задачами и сопрограммами.
4. Примитивность. По сравнению с задача-
ми сопрограммы не допускают целый ряд 
операций.
– Операции с семафорами и мьютексами 
не представлены для сопрограмм.
– Набор операций с очередями ограничен 
по сравнению с набором операций для 
задач.
– Сопрограмму после создания нельзя уни-
чтожить или изменить ее приоритет.
5. Ограничения в использовании:
– Внутри сопрограмм нельзя использовать 
локальные переменные.
– Существуют строгие требования к ме-
сту вызова API-функций внутри сопро-
грамм.


Достарыңызбен бөлісу:
1   ...   89   90   91   92   93   94   95   96   ...   129




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

    Басты бет