98
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 9 '2011
компоненты
микроконтроллеры
Таким образом, используя сопрограммы,
удалось достичь экономии оперативной па-
мяти 1180–345 = 835 байт, что составляет
приблизительно 71%.
Состояния сопрограммы
Как и задача, сопрограмма может пребывать
в одном из нескольких возможных состояний.
Для сопрограмм этих состояний три:
1. Выполнение (Running). Говорят, что сопро-
грамма выполняется, когда в данный момент
времени процессор занят непосредственно
ее выполнением. В любой момент вре-
мени только одна сопрограмма в системе мо-
жет находиться в состоянии выполнения.
2. Готовность к выполнению (Ready). Говорят,
что сопрограмма готова к выполнению,
если она не блокирована, однако в данный
момент процессор занят выполнением
другой сопрограммы или какой-то задачи.
Сопрограмма может находиться в состоя-
нии готовности к выполнению по одной
из следующих причин:
– Другая сопрограмма в данный момент
находится в состоянии выполнения.
– Одна из задач находится в состоянии
выполнения, если в программе одно-
временно используются и сопрограммы,
и задачи.
3. Блокированное состояние (Blocked).
Сопрограмма блокирована, когда ожида-
ет наступления некоторого события. Как
и в случае с задачами, событие может быть
связано с отсчетом заданного временного
интервала — временное событие, а мо-
жет быть связано с ожиданием внешнего
по отношению к сопрограмме события.
Например, если сопрограмма вызовет
API-функцию crDELAY(), то она перейдет
в блокированное состояние и пробудет
в нем на протяжении заданного интервала
времени. Блокированные сопрограммы
не получают процессорного времени.
Графически состояния сопрограммы и пе-
реходы между ними представлены на рис. 1.
В отличие от задач у сопрограмм нет при-
остановленного (suspended) состояния, од-
нако оно может быть добавлено в будущих
версиях FreeRTOS.
Достарыңызбен бөлісу: |