You are here

Приоритеты задачи

Перевод может содержать ошибки. Читайте первоисточник: Task Priorities

Назад: [Как работает FreeRTOS] Вверх: [Как работает FreeRTOS] Вперёд: [Как работает FreeRTOS]

 

Приоритеты задачи

Каждой задаче назначается приоритет от 0 до ( configMAX_PRIORITIES - 1 ), где configMAX_PRIORITIES - константа, определяемая в файле FreeRTOSConfig.h.

Если порт использует реализацию оптимизированного для порта механизма выбора задачи, который использует тип инструкций "подсчёт ведущих нулей" (для выбора задачи за одну инструкцию) и configUSE_PORT_OPTIMISED_TASK_SELECTION установлен в 1 во FreeRTOSConfig.h, тогда configMAX_PRIORITIES не может быть больше, чем 32. Во всех других случаях configMAX_PRIORITIES  может берёт любое значение в пределах разумного - но, по соображениям эффективности использования ОЗУ, следует поддерживать минимально необходимое значение.

Маленькие номера приоритетов обозначают низкие приоритеты задачи. А idle task имеет нулевой приоритет (tskIDLE_PRIORITY).

Планировщик FreeRTOS гарантирует, что задачам в состоянии Готова или Запущена будет всегда будет выделяться процессорное время в предпочтении к задачам с более низким приоритетом, которые также находятся в состоянии готовности. Другими словамия, задача помещённая в состоянии Запущена это всегда задача с наивысшим приоритетом из тех, которые могут быть выполнены.

The FreeRTOS scheduler ensures that tasks in the Ready or Running state will always be given processor (CPU) time in preference to tasks of a lower priority that are also in the ready state. In other words, the task placed into the Running state is always the highest priority task that is able to run.

Любое количество задач может иметь одинаковый приоритет. Если configUSE_TIME_SLICING не определён или установлен в 1, тогда находящиеся в состоянии готовности задачи с одинаковым приоритетом будут делить (совместно использовать) доступное процессорное время, используя схему циклического планирования с разделением по времени (time sliced round robin).

 

Hobby's category: