Что такое операционная система реального времени
Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Что такое операционная система реального времени (RTOS) и как она работает
Что такое ОСРВ?
Когда мы слышим слово «операционная система», на сначала приходит мысль о том, что операционная система используется в ноутбуках и компьютерах. Обычно мы используем разные типы операционных систем, такие как Windows XP, Linux, Ubuntu, Windows 7, 8 и 10. В смартфонах операционные системы типа Android имеют свои разновидности вроде KitKat, Jellybean, Marshmallow и Nougat. В цифровом электронном устройстве тоже может быть какая-то операционная система. Существуют различные типы операционных систем для разработки на основе микроконтроллеров, но здесь мы обсудим именно операционные систему реального времени (ОСРВ или RTOS).
ОСРВ – это операционная система, мозг системы реального времени и ее незамедлительная реакция на входные данные. В ОСРВ задание будет выполнено к указанному времени, и она реагирует предсказуемым образом на непредсказуемые события. Структура ОСРВ показана ниже.
Виды операционных систем реального времени
Существует три различных типа ОСРВ, это:
Программная операционная система реального времени
Программная (иногда называют «мягкая») операционная система реального времени имеет определенные сроки, которые могут быть пропущены, и они начнут действоват в момент времени t = 0+. «Мягкая» операционная система реального времени является типом ОС и не содержит ограничений по экстремальным правилам. Критическое время этой операционной системы откладывается до некоторой степени. Примерами приложений этой операционной системы являются цифровая камера, мобильные телефоны и онлайн-данные и т. д.
Аппаратная операционная система реального времени
Это также тип ОСРВ, и каждое ее действие выполняется в срок. Предустановленные сроки будут реагировать в момент времени t = 0. Некоторыми приложениями этой операционной системы являются управление подушками безопасности в автомобилях, антиблокировочная система тормозов, система управления двигателем и т. д.
Фирменная операционная система реального времени
Фирменная ОСРВ имеет определенные временные ограничения, они не являются строгими, и это может вызвать нежелательные эффекты. Примеры приложений этой операционной системы – визуальный осмотр в промышленной автоматизации.
Принцип работы операционной системы реального времени
Существуют различные типы основных функций ОСРВ:
Планировщик на основе приоритетов
В планировщике на основе приоритетов большая часть ОСРВ имеет от 32 до 256 возможных приоритетов для отдельных задач или процессов. Этот планировщик запустит процесс с наивысшим приоритетом. Если задача выполняется на ЦП, то выполняется следующая задача с наивысшим приоритетом, которая продолжает процессы. В системе процесс с наивысшим приоритетом будет иметь процессор.
Есть три состояния задач или процессов, которые готовы к выполнению или другое заблокировано, и описание каждого состояния приведено ниже.
Готов к запуску (Ready to Run). Говорят, что готовность к запуску наступает тогда, когда у процесса есть все ресурсы для запуска, но он не должен находиться в рабочем состоянии.
Запущен (Running). Если задача выполняется, то говорят, что она запущена.
Заблокирован (Blocked). В этом состоянии, если у процесса недостаточно ресурсов для запуска, он переводится в заблокированное состояние.
Процедура прерывания системного тактирования
Для выполнения чувствительной ко времени операции ОСРВ предоставит определенное системное тактирование. Если, например, такт 1 мс, то вы должны выполнить задачу за 50 мс. Обычно за этим следует API, который говорит: «Через 50 мс разбудите меня». Следовательно, задача будет в спящем режиме, пока ОСРВ не проснется. Тем не менее, пробуждение не гарантирует, что оно будет работать точно в это время, это зависит от приоритета, и если в данный момент работает более высокий приоритет, то данная задача будет отложена.
Детерминированное поведение
ОСРВ обеспечивает последовательное выполнение и 10 и 100 задач, это не имеет никакого значения для переключения контекста, она определяет следующую задачу с наивысшим приоритетом. В простейшей детерминистической области ОСРВ – это обработка прерываний, когда линия прерывания сигнализирует о задачах, ОСРВ немедленно выполняет действие правильной процедуры обработки прерываний, и прерывание обрабатывается без какой-либо задержки.
Службы ОСРВ
Наиболее важной частью операционной системы является ядро. Для мониторинга оборудования задача должна быть облегчена, а ядро отвечает за распределение ресурсов. Если задача не может привлечь внимание процессора каждый раз, то ядро предоставляет некоторые другие сервисы или службы. Этими службами могут быть:
Преимущества ОСРВ
Когда задача выполняется, не возникает ошибок, потому что ОСРВ не содержит ошибок. Распределение памяти – лучший тип для управления в этом виде системы. В этом виде системы время сдвига очень мало. Из-за небольшого размера ОСРВ используется во встраиваемых системах, такие как системы для транспорта и т.п.
Операционные системы реального времени для начинающих
Привет, Хабр!
Сегодня я расскажу о такой интересной штуке как операционная система реального времени(ОСРВ). Не уверен, что это будет интересно для бывалых программистов, но, думаю, новичкам понравится.
Что такое ОСРВ?
Зачем она нам нужна?
На то есть довольно много причин.
Во-первых ОСРВ поддерживает многозадачность, приоритеты процессов семафоры и многое другое.
Во-вторых она очень легкая и почти не требует ресурсов.
В-третьих все вышесказанное мы можем получить практически на любом железе (например, FreeRTOS запускается даже на 8-битных AtMega).
Ну и в-четвертых: просто поиграться и получить удовольствие.
Обзор 3 известных ОСРВ.
Внимание: дальше идет мое личное мнение.
FreeRTOS
Одна из самых популярных ОСРВ на сегодняшний день. Портирована на огромное количество железа. Оффициальный сайт.
Плюсы
Минусы
1)Довольно-таки сложный процесс портирования на новое железо.
Вывод: Это действительно профессиональная ОСРВ с хорошей документацией. Будет хороша для новичка, если на его железо уже есть порт.
KeilRTX
До последнего времени эта ОСРВ была коммерческой, но недавно стала открытой. Работает только на архитектуре arm. Оффициальный сайт.
Плюсы
1)Бесплатная
2)Легко портируется на новое железо( в пределах архитектуры arm).
3) Есть различные библиотеки: графика, интернет и другое.
Минусы
1)Работать на в Keil с ней практически нереально
2) Немного урезанный функционал
3) Поддерживается только arm.
4)(на личном опыте) Проигрывает многим ОСРВ по скорости.
Вывод: идеально подойдет для новичка и мелких проектов.
Мощная коммерческая ОСРВ. Сайт.
Плюсы
Минусы
1)Коммерческая.
2) Сложна в использовании.
Вывод: назвать ее ОСРВ для новичка можно с большой натяжкой.
Другие интересные ОСРВ
RTLinux ОСРВ на основе обычного Линукса.
QNX ОСРВ на основе Unix.
Особенности разработки с использованием ОСРВ
Ну во-первых надо понять следующее: ОСРВ- это не Windows. Его нельзя установить. Эта система просто компилируется с Вашей программой.
При написании программ с ОСРВ не используются функции в обычном их понимании. Вместо функций используются процессы( или таски).Отличие в том что процессы, в отличии от функций, являются бесконечными циклами и никогда не заканчиваются(если только кто-то или он сам его не убъет — то есть выгрузит из памяти).
Если включено несколько процессов, то ОСРВ переключает их, выдавая машинное время и ресурсы по очереди. Вот тут то и возникает понятия приоритета процесса- если двум процессам единовременно нужно машинное время, то ОСРВ даст его тому, у кого приоритет больше.
В ОСРВ есть специальные функции задержки- чтобы время зря не пропадало на время задержки одного процесса выполняется второй.
Теперь поговорим о такой вещи как семафор- эта такая штука, которая управляет доступом процесса к ресурсам приложения. Для каждого ресурса есть маркер — когда процессу нужен ресурс — он его забирает и пользуется данным ресурсом. Если маркера нет, то процессу придется ждать, пока его вернут. Приведу пример: разные процессы отправляют информацию по одному UART. Если бы не было семафора, то они бы отправляли байты по очереди и получилась бы неразбериха. А так первый процесс взял маркер на UART отправил сообщение и отдал второму( и так — до бесконечности).
Дополнительные библиотеки ОСРВ.
Часто ОСРВ предлагают различные библиотеки для работы, например, с графикой, интернетом и т.д. Они действительно удобны и не стоит брезгать их использовать. Однако, помните, что без ОСРВ, для которой они написаны, они работать не будут.
Вот примеры:
Для RTX графика интернет Файловая система
Во второй( и, наверное, последней ) части мы поговорим о мьютексах, буферах сообщений и попрактикуемся в их использовании.
Операционные системы реального времени (ОСРВ)
Назначение ОСРВ
● система должна обеспечить не только результат обработки поступившей информации, но и длительность времени получения результата. От ОСРВ требуется наряду с получением необходимого результата реализовать заданные временные параметры: интервалы времени между событиями и откликами или заданную частоту приема внешних данных и выдачи результатов;
● система способна выполнять несколько задач одновременно. Типичная мультизадачная операционная система выделяет каждой задаче (программе) одинаковый интервал времени, создавая у пользователя впечатление, что все программы выполняются одновременно. Операционная система реального времени представляет собой частный случай мультизадачной операционной системы, оптимизированной для реализации процессов управления. Она быстро реагирует на внешние события и позволяет имитировать работу нескольких процессоров, каждый из которых контролирует одно устройство. Поэтому для управления сложной системой с помощью одного процессора целесообразно использовать ОСРВ, которая способна координировать выполнение различных задач. Примером ОСРВ может служить система управления лифтами.
Принцип работы ОСРВ
При поступлении запроса производится проверка на входные данные для решения задачи. При их наличии задача начинает выполняться. ЕСЛИ необходимые входные данные отсутствуют, то ОСРВ переходит к следующей задаче (при наличии запроса на ее выполнение). Для получения входных данных и запуска соответствующей задачи используются прерывания. Запуск задачи обычно производится путем ее пересылки из очереди ожидающих задач в очередь задач, предназначенных для выполнения.
Каждая задача имеет входную очередь сообщений, которые она может обрабатывать только в течение отведенного интервала времени или при запросе на прерывание. Если ответ занимает слишком много времени, то задача помещается обратно в очередь выполняемых команд, и управление передается следующей задаче.
Системные ресурсы (дисковые накопители, таймеры, устройства ввода–вывода и др.) обычно доступны только для определенных задач. Это позволяет организовать очередь запросов к ресурсам таким образом, чтобы предотвратить одновременный доступ к одному ресурсу нескольким задачам.
Требования к ОСРВ.
Современные ОС PB должны удовлетворять следующим требованиям:
● малое время отклика (получение результата);
● реализация многозадачного режима с гибким механизмом приоритетов;
● малый объем памяти (достаточный для размещения в резидентной памяти прикладной системы);
● наличие сервисных функций и средств поддержки для разработки прикладных программ и ряд других.
В настоящее время для разработки микроконтроллерных систем используется ОСРВ, имеющие различные характеристики и прошедшие апробацию в таких областях применения, как системы автоматизации производства, контрольно–измерительные системы, телекоммуникационная аппаратура, авиационно–космическая и военная техника, транспорт, системы обеспечения безопасности и др.
Типы ОСРВ
Можно выделить два типа ОСРВ:
● системы жесткого реального времени, которые занимают небольшой объем памяти и имеют минимальные время отклика, но обладают весьма ограниченными сервисными средствами. Они реализуются по модульному принципу, что позволяет использовать только те средства, которые необходимы в данном приложении. В результате для конкретного применения достигается существенное сокращение объема необходимой памяти и времени отклика;
● системы мягкого реального времени, которые требуют большего объема памяти, имеют более длительное время отклика, но зато удовлетворяют широкому спектру требований пользователя по режиму обслуживания задач, уровню предоставляемого сервиса. Средства интерфейса систем мягкого реального времени позволяют использовать высокоэффективные отладчики или интегрированные среды разработки.
Система мягкого реального времени.
● модульность, которая обеспечивает возможность конфигурации целевой ОСРВ в соответствии с классом решаемых задач. Исключая неиспользуемые модули, можно сократить объем памяти и снизить стоимость системы;
● гибкость структуры, обеспечивающая реконфигурацию системы и расширение ее функциональных возможностей. Функциональные компоненты OS–9:
● ядро реального времени ( OS –9 kernel );
● общие средства ввода/вывода ( I / O man );
● средства разработки программ.
Функциональные компоненты OS –9 выполнены в виде автономных модулей, которые могут удаляться или добавляться с помощью простых команд, не требующих повторной компиляции или перекомпоновки. Комбинируя модули, можно создавать целевые операционные системы с различными функциональными возможностями.
Рассмотрим Перечисленные выше функциональные компоненты.
Ядро реального времени
Система содержит два вида ядер:
● стандартные менеджеры, предназначенные для выполнения таких базовых функций обмена с внешними устройствами как организация очереди поступающих команд, управление байтовым и блочным последовательным обменом и обменом с прямым доступом к памяти;
● сетевые и коммуникационные менеджеры, обеспечивающие работу OS –9 с различными сетями и обмен данными по каналам связи с наиболее распространенными стандартами протоколов обмена;
● менеджеры графического интерфейса и работы с мультимедиа–приложениями. Средства разработки программ. В составе OS –9 имеется пакет программ (BSP) для поддержки плат развития, который обеспечивает совместную работу OS–9 с целым рядом SBC (Single Board Computer — одноплатный компьютер). Совместное использование BSP и OS–9 позволяет сконфигурировать целевую систему для конкретного приложения.
● текстовый редактор, располагающий средствами перекодировки клавиатуры, что позволяет вести редактирование в удобном для пользователя формате;
● компиляторы Ultra C/C++;
● отладчики, обеспечивающие два режима отладки: пользовательский — для создания прикладных программ, и системный — для обслуживания прерываний, системных вызовов и обращения к ядру реального времени;
● средства интерфейса с логическими анализаторами фирмы.
Среда FasTrak обладает широкими функциональными возможностями, что делает ее эффективным средством создания программного обеспечения для различных микроконтроллерных систем.
Фирма Microware Systems поставляет ряд системных пакетов, ориентированных на различные сферы приложения:
● Wireless OS –9 — для разработки устройств беспроводной связи: сотовых телефонов, пейджеров, портативных цифровых ассистентов ( PDA );
● Internet OS –9 — для разработки устройств с доступом к сети Internet ;
● Digital Audio / Video Interactive Decoder ( DAVID ) OS –9 — для разработки распределенных систем цифрового интерактивного телевидения.
Система жесткого реального времени
● пакет программ для поддержки плат развития;
Для комплексной отладки целевых систем VxWorks обеспечивает интерфейс со схемными эмуляторами и эмуляторами ПЗУ. Интегрированная среда разработки Tornado . В состав Tornado входит система VxWorks 5.3, включающая ядро реального времени и системные библиотеки, средства программирования, высокоуровневый отладчик и ряд других средств системы. Дополнительные средства среды Tornado обеспечивают управление процессом отладки, визуализацию состояния целевой системы, другие сервисные функции. Открытая архитектура среды Tomado позволяет пользователю подключать собственные специализированные инструментальные средства и расширять возможности стандартных средств.
Операционная система реального времени VxWorks вместе с интегрированной средой Tornado является мощным средством реализации целевых систем, работающих в условиях жестких ограничений на объем используемой памяти и время отклика на внешние события.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
RTOS (Real-Time Operating System)
Содержание
Системы жёсткого и мягкого реального времени
Системы жёсткого реального времени не допускают задержек реакции системы, так как это может привести к потере актуальности результатов, большим финансовым потерям или даже авариям и катастрофам. Ситуация, в которой обработка событий происходит за время, большее предусмотренного, в системе жёсткого реального времени считается фатальной ошибкой. При возникновении такой ситуации операционная система прерывает операцию и блокирует её, чтобы, насколько возможно, не пострадала надёжность и готовность остальной части системы. Примерами систем жёсткого реального времени могут быть бортовые системы управления (на самолёте, космическом аппарате, корабле, и пр.), системы аварийной защиты, регистраторы аварийных событий. [Источник 3]
В системе мягкого реального времени задержка реакции считается восстановимой ошибкой, которая может привести к увеличению стоимости результатов и снижению производительности, но не является фатальной. Примером может служить работа компьютерной сети. Если система не успела обработать очередной принятый пакет, это приведёт к остановке на передающей стороне и повторной посылке (в зависимости от протокола). Данные при этом не теряются, но производительность сети снижается.
Основное отличие систем жёсткого и мягкого реального времени можно охарактеризовать так: система жёсткого реального времени никогда не опоздает с реакцией на событие, система мягкого реального времени не должна опаздывать с реакцией на событие.
Отличительные черты RTOS
Таблица сравнения операционных систем реального времени (ОСРВ) и обычных операционных систем.
ОС реального времени | ОС общего назначения | |
---|---|---|
Основная задача | Успеть среагировать на события, происходящие на оборудовании | Оптимально распределить ресурсы компьютера между пользователями и задачами |
На что ориентирована | Обработка внешних событий | Обработка действий пользователя |
Как позиционируется | Инструмент для создания конкретного аппаратно-программного комплекса реального времени | Воспринимается пользователем как набор приложений, готовых к использованию |
Кому предназначена | Квалифицированный разработчик | Пользователь средней квалификации |
Архитектура
Cтруктура ОСРВ эволюционировала от монолитной к многослойной структуре ОС и далее к архитектуре клиент-сервер:
Как правило, большинство современных ОСРВ построено на основе микроядра (kernel или nucleus), которое обеспечивает планирование и диспетчеризацию задач, а также осуществляет их взаимодействие. Несмотря на сведение к минимуму в ядре абстракций ОС, микроядро все же должно иметь представление об абстракции процесса. Все остальные концептуальные абстракции операционных систем вынесены за пределы ядра, вызываются по запросу и выполняются как приложения.
Особенности ядра
Четкой границы между ядром (KERNEL) и операционной системой нет. Различают их, как правило, по набору функциональных возможностей. Ядра предоставляют пользователю такие базовые функции, как планирование синхронизация задач, межзадачная коммуникация, управление памятью и т. д. Операционные системы в дополнение к этому имеют файловую систему, сетевую поддержку, интерфейс с оператором и другие средства высокого уровня.
Хотя каждая задача в системе, как правило, выполняет какую-либо отдельную функцию, часто возникает необходимость в согласовании (синхронизации) действий, выполняемых различными задачами. Такая синхронизация необходима, в основном в следующих случаях:
Планирование задач
Работа планировщика
Выполнение задачи
В обычных ОСРВ, задача имеет три состояния
Алгоритмы планирования
В системах реального времени на алгоритм планировки возлагается задача определения последовательности выполнения заданий в соответствии с их требованиями к ресурсам и ко времени исполнения.
Используемые в ОС общего назначения алгоритмы круговой диспетчеризации неприменимы в чистом виде в ОС РВ. Рассмотрим основные виды планирования применительно к задачам реального времени.
Вытесняющее планирование с использованием круговой стратегии
Задача реального времени добавляется к очереди готовых к выполнению задач, ожидающих наступления следующего кванта времени. В этом случае время планирования в целом неприемлемо для приложений реального времени.
Невытесняющее планирование на основе приоритетов
В невытесняющем планировщике можно использовать механизм приоритетного планирования, дающий заданиям реального времени наивысший приоритет. В этом случае готовые задания реального времени будут выполняться сразу же после блокирования текущего процесса либо выполнения его до конца. Такая методика может привести к большим, до нескольких секунд, задержкам при выполнении в критический момент медленной низкоприоритетной задачи, так что этот подход также неприменим.
Вытесняющее планирование на основе приоритетов с точками вытеснения
Наиболее приемлемый подход состоит в комбинировании приоритетов с прерываниями таймера. При этом точки вытеснения равноудалены друг от друга. При достижении точки вытеснения выполняющееся в настоящий момент задание вытесняется, если в наличии имеется более высокоприоритетное задание в состоянии ожидания; таким образом, вытеснение заданий в этом случае оказывается частью ядра ОС. Здесь задержки могут быть порядка нескольких миллисекунд. Для ряда приложений RT задержки такого уровня вполне приемлемы.
Вытесняющее планирование на основе приоритетов с немедленным вытеснением
Заключается в том, что ОС отвечает на прерывание практически немедленно, если только она не выполняет код критического раздела, который не может быть прерван. Задержки планирования при этом снижаются до 100 микросекунд и менее.
Взаимодействие между задачами и разделение ресурсов
Многозадачным системам необходимо распределять доступ к ресурсам. Одновременный доступ двух и более процессов к какой-либо области памяти или другим ресурсам представляет определённую угрозу. А именно Deadloc и Priority inversionСуществует три способа решения этой проблемы:
ОСРВ обычно не используют первый способ, потому что пользовательское приложение не может контролировать процессор столько, сколько хочет. Однако во многих встроенных системах и ОСРВ позволяется запускать приложения в режиме ядра для доступа к системным вызовам и даётся контроль над окружением исполнения без вмешательства ОС.
На однопроцессорных системах наилучшим решением является приложение, запущенное в режиме ядра, которому позволено блокирование прерываний. Пока прерывание заблокировано, приложение использует ресурсы процесса единолично и никакая другая задача или прерывание не может выполняться. Таким образом защищаются все критичные ресурсы. После того как приложение завершит критические действия, оно должно разблокировать прерывания, если таковые имеются. Временное блокирование прерывания позволено только тогда, когда самый долгий промежуток выполнения критической секции меньше, чем допустимое время реакции на прерывание. Обычно этот метод защиты используется, только когда длина критического кода не превышает нескольких строк и не содержит циклов. Этот метод идеально подходит для защиты регистров.
Когда длина критического участка больше максимальной или содержит циклы, программист должен использовать механизмы, идентичные или имитирующие поведение систем общего назначения, такие, как семафоры и посылка сигналов.
Распределение (Выделение) памяти
Простой алгоритм с фиксированной длиной участков памяти очень хорошо работает в несложных встроенных системах.