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



Pdf көрінісі
бет39/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   35   36   37   38   39   40   41   42   ...   129
Kurniz

Схема выделения памяти
heap_3.c
Схема heap_3.c использует вызовы функ-
ций выделения/освобождения памяти 
malloc() и free() из стандартной библиоте-
ки языка Си. Однако с помощью останова 
планировщика на время выполнения этих 
функций достигается псевдореентерабель-
ность (thread safe) этих функций, то есть пре-
дотвращается одновременный вызов этих 
функций из разных задач.
Макроопределение configTOTAL_HEAP_
SIZE не влияет на размер кучи, который те-
перь задается настройками компоновщика.
Получение объема
свободной памяти кучи
Начиная с версии V6.0.0 в FreeRTOS добав-
лена API-функция xPortGetFreeHeapSize()
с помощью которой можно получить объем 
доступной для выделения свободной памяти 
кучи. Ее прототип:
size_t xPortGetFreeHeapSize( void );
Однако следует учесть, что API-функция 
xPortGetFreeHeapSize() доступна только при 
рис. 5. Распределение памяти кучи при использовании схемы heap_1.c
рис. 6. Распределение памяти кучи при использовании схемы heap_2.c
а
а
б
б
в
в


101
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 5 '2011
www.kite.ru
компоненты
микроконтроллеры
использовании схем heap_1.c и heap_2.c. При 
использовании схемы heap_3.c получение 
объема доступной памяти становится нетри-
виальной задачей.
резюме
по вытесняющей
многозадачности в FreeRTOS
Подведя итог по вытесняющей многоза-
дачности в FreeRTOS, можно выделить сле-
дующие основные принципы:
1. Каждой задаче назначается приоритет.
2. Каждая задача может находиться в одном 
из нескольких состояний (выполнение, 
готовность к выполнению, блокирован-
ное состояние, приостановленное состоя-
ние).
3. В один момент времени только одна задача 
может находиться в состоянии выполне-
ния.
4. Планировщик переводит в состояние вы-
полнения готовую к выполнению задачу 
с наивысшим приоритетом.
5. Задачи могут ожидать наступления со-
бытия, находясь в блокированном состоя-
нии.
6. События могут быть двух основных ти-
пов:
временные события;
– события синхронизации.
7. Временные события чаще всего связаны 
с организацией периодического выполне-
ния каких-либо полезных действий или 
с отсчетом времени тайм-аута.
8. События синхронизации чаще всего свя-
заны с обработкой асинхронных событий 
внешнего мира, например, с получением 
информации от периферийных (по отно-
шению к процессору) устройств.
Такая схема называется вытесняющим 
планированием с фиксированными приори-
тетами (Fixed Priority Preemptive Scheduling). 
Говорят, что приоритеты фиксированы, 
потому что планировщик самостоятельно 
не может изменить приоритет задачи, как это 
происходит при динамических алгоритмах 
планирования [5]. Приоритет задаче назна-
чается в явном виде при ее создании, и так же 
в явном виде он может быть изменен этой же 
или другой задачей. Таким образом, про-
граммист целиком и полностью контролиру-
ет приоритеты задач в системе.


Достарыңызбен бөлісу:
1   ...   35   36   37   38   39   40   41   42   ...   129




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

    Басты бет