OSA : Планировщик

Сервис OS_Run() - это макрос, который содержит бесконечный цикл с работой планировщика. Этот сервис вызывается в самом конце функции main() и полностью передает управление ядру OSA. Планировщик отвечает за проверку готовности задач к выполнению, определение задачи с наивысшим приоритетом (из готовых) и за запуск задач. Вызов сервиса OS_Run() может располагаться только в одном месте программы, т.к. он содержит глобальные метки для возврата из задач.

Планировщик по очереди перебирает все активные задачи, проверяя их готовность и одновременно вычисляя задачу с высшим приоритетом. Если была найдена одна или несколько готовых задач, то из них выбирается та, у которой приоритет выше, и ей передается управление. Подробнее о приоритетах см. "События и проиритетность".

Исключение составляет работа в критической секции. OSA допускает передачу управления планировщику из задачи, выполняющейся в критической секции. Планировщик, определив, что находится в критической секции, не осуществляет поиск готовых задач, а сразу же передает управление последней выполнявшейся задаче.