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


В этой статье мы продолжаем знакомить читателя с созданием программ



Pdf көрінісі
бет59/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   55   56   57   58   59   60   61   62   ...   129
Kurniz

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


24
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 7 '2011
микроконтроллеры
исходит прерывание при возникновении 
какого-то внешнего события. В момент вре-
мени (2) управление получает обработчик 
прерывания, который, используя механизм 
двоичного семафора, выводит из блоки-
рованного состояния задачу-обработчик 
прерывания. Так как приоритет задачи-
обработчика выше приоритета прикладной 
задачи, то задача-обработчик вытесняет при-
кладную задачу, которая остается в состоя-
нии готовности к выполнению (3). В момент 
времени (4) задача-обработчик блокируется, 
ожидая возникновения следующего преры-
вания, и управление снова получает низко-
приоритетная прикладная задача.
В теории многопоточного программиро-
вания [1] двоичный семафор определен как 
переменная, доступ к которой может быть 
осуществлен только с помощью двух атомар-
ных функций (то есть тех, которые не могут 
быть прерваны планировщиком):
1) wait() или P() — означает захват семафора, 
если он свободен, и ожидание, если занят. 
В примере выше функцию wait() реализует 
задача-обработчик прерывания.
2) signal() или V() — означает выдачу семафо-
ра, то есть после того как одна задача выда-
ет семафор, другая задача, которая ожидает 
возможности его захвата, может его захва-
тить. В примере выше функцию signal() 
реализует обработчик прерывания.
Легко заметить, что операция выдачи 
двоичного семафора напоминает операцию 
помещения элемента в очередь, а операция 
захвата семафора — чтения элемента из оче-
реди. Если установить размер очереди рав-
ным одному элементу, то очередь превра-
щается в двоичный семафор. Наличие эле-
мента в очереди означает, что одна (а может, 
и несколько) задача произвела(и) выдачу 
семафора, и теперь другая задача может его 
захватить. Пустая же очередь означает ситуа-
цию, когда семафор уже был захвачен, и за-
дача, которая «хочет» его захватить, вынуж-
дена ожидать (находясь в блокированном со-
стоянии), пока другая задача или обработчик 
прерывания произведут выдачу семафора.
В именах API-функций FreeRTOS для ра-
боты с семафорами используются термины 


Достарыңызбен бөлісу:
1   ...   55   56   57   58   59   60   61   62   ...   129




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

    Басты бет