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