Почему во встраиваемых системах необходима ОС?
Главным управляющим элементом во встраиваемых системах является микроконтроллер — устройство, объединяющее в себе все основные компоненты компьютера (микропроцессор, ОЗУ, ПЗУ, модули периферии). ПО, загружаемое в память микроконтроллера, позволяет обеспечить желаемое поведение системы за счёт использования его аппаратных ресурсов.
Встраиваемое ПО может быть создано без какой-либо ОС только в том случае, если функциональное назначение устройства под управлением микроконтроллера не требует реализации сложной логики обработки данных. В современном мире, когда требования к функциональности и технологичности встраиваемых устройств достаточно высоки и продолжают активно расти, использование ОС при разработке приложений позволяет получить всё больше преимуществ:
- готовая основа ПО.
Устраняется необходимость в реализации базового функционала для обеспечения работы приложения. Программист может сосредоточиться на создании компонентов ПО, предназначенных непосредственно для решения прикладной задачи. Сервисы ОС будут обеспечивать компонентам приложения доступ к необходимым ресурсам, а также организовывать взаимодействие этих компонентов.
- структурированность ПО.
Приложение, исполняющееся в среде ОС, представляет собой набор независимых задач, каждая из которых выполняет логически обособленную часть функционала. Разделение ПО на задачи облегчает понимание работы как отдельных его компонентов, так и приложения в целом. Кроме того, выделение функций в отдельные задачи даёт возможность снизить взаимное влияние компонентов ПО (изменение поведения одного из компонентов не приводит к необходимости изменения других).
- соответствие ПО особым требованиям к системе.
Встроенные механизмы ОС могут обеспечивать соблюдение особых требований к работе приложения, например, выполнение задач в условиях реального времени, надёжное восстановление функциональных возможностей приложения после сбоев или отказов в отдельных задачах, оборудовании и др.
- повторное использование кода.
Задачи, выполняющие общие для разных приложений функции, могут быть использованы в нескольких проектах.
- переносимость кода.
Сервисы ОС формируют для приложения абстрактный интерфейс доступа к аппаратным ресурсам, благодаря которому разработчик может снизить зависимость кода приложения от конфигурации оборудования.
- расширенные возможности отладки.
Функционал ОС может включать в себя механизмы получения дополнительной отладочной информации, такие как профилирование кода, трассировка задач, мониторинг состояния системных объектов, измерение загрузки ЦП и прочее.
Вышеперечисленные факторы позволяют упростить и ускорить процесс разработки ПО, что, в свою очередь, даёт возможность снизить затраты на создание и сопровождение конечного продукта.
Каким образом и для чего ОС обеспечивает работу в реальном времени?
Системы реального времени характеризуются гарантированным значением максимальной задержки реакции на события внешней среды. Такие требования применимы не ко всем встраиваемым системам. Как правило, потребность в использовании ОСРВ при разработке ПО для встраиваемых устройств возникает, когда превышение предусмотренного времени при обработке события системой может нарушить нормальный процесс взаимодействия со средой. Например, при управлении технологическим процессом система должна обеспечивать выполнение необходимых операций в строго определённый промежуток времени, несоблюдение которого приводит к отказу оборудования и остановке всего процесса.
Для соответствия требованиям реального времени ОС должна обладать инструментами, обеспечивающими предсказуемую длительность обработки событий в приложении. В традиционных механизмах планирования задач детерминированность поведения достигается за счёт использования следующих решений:
- предсказуемое время переключения задач и обработки прерываний.
Функции ОС по управлению задачами (планировщик) не должны содержать алгоритмов, время выполнения которых заранее неизвестно (например, обход динамического связанного списка) и может превышать требуемую величину задержки реакции системы.
- приоритетное планирование.
Аппаратные ресурсы должны выделяться задачам на основании их приоритетов. При этом необходимо:
- обеспечить выполнение задачи с наивысшим приоритетом,
- исключить возможность инверсии приоритетов, когда высокоприоритетные задачи вытесняются низкоприоритетными.
- предсказуемые механизмы синхронизации.
Для организации совместного доступа нескольких задач к общим ресурсам должны быть использованы инструменты блокировки/разблокировки задач, не нарушающие детерминированность работы планировщика.