Введение
Операционные системы реального времени (RTOS, Real‑Time Operating System) — специализированные ОС, гарантирующие выполнение задач в строго заданные временные рамки. В отличие от общих ОС (Windows, Linux), RTOS фокусируются на детерминированности и предсказуемости задержек, а не на максимизации пропускной способности.
Ключевые требования к RTOS:
- гарантированное время отклика на событие (jitter < 1 мкс в жёстких RTOS);
- предсказуемое время переключения контекста;
- поддержка приоритетов и вытесняющей многозадачности;
- минимальные накладные расходы на ядро.
Области применения:
- промышленная автоматика (ПЛК, ЧПУ);
- автомобильная электроника (ABS, ECU);
- аэрокосмос и авионика;
- медицинская аппаратура (ИВЛ, МРТ);
- робототехника и дроны.
В статье рассмотрены:
- архитектура RTOS;
- алгоритмы планирования задач;
- механизмы межпроцессного взаимодействия (IPC);
- примеры RTOS и практические рекомендации.
1. Архитектура RTOS
1.1. Ядро (Kernel)
- Функции:
- управление задачами (создание, удаление, переключение);
- синхронизация и взаимное исключение;
- управление памятью (статическое/динамическое);
- обработка прерываний.
- Особенности:
- минимальный размер (от 1–5 КБ);
- отсутствие страничной виртуальной памяти;
- превентивное планирование (preemptive scheduling).
1.2. Драйверы устройств
- Тесная интеграция с аппаратурой.
- Обработка прерываний с минимальными задержками.
- Буферизация ввода‑вывода.
1.3. Системные сервисы
- Таймеры и отсчёт времени (tick‑based или tickless).
- Сигналы и события.
- Очереди сообщений.
- Семафоры и мьютексы.
1.4. Уровень приложений
- Задачи (threads/tasks) с фиксированными приоритетами.
- Обработчики прерываний (ISR).
- Фоновые циклы (idle loop).
2. Планировщик задач (Scheduler)
2.1. Основные понятия
- Задача (task) — независимый поток выполнения с собственным стеком и контекстом.
- Приоритет — числовое значение (например, 0–255), определяющее порядок исполнения.
- Состояние задачи:
- Running (исполняется);
- Ready (готова, ждёт CPU);
- Blocked (ожидает ресурса);
- Suspended (приостановлена).
- Квант времени (time slice) — максимальное время непрерывного исполнения задачи.
2.2. Алгоритмы планирования
2.2.1. Вытесняющее с фиксированными приоритетами (FPPS, Fixed Priority Preemptive Scheduling)
- Каждая задача имеет статический приоритет.
- При появлении задачи с более высоким приоритетом текущая вытесняется.
- Плюсы: предсказуемость, низкие накладные расходы.
- Минусы: инверсии приоритетов (priority inversion).
- Применение: большинство RTOS (FreeRTOS, QNX, VxWorks).
2.2.2. Круговой (Round‑Robin, RR)
- Задачи одного приоритета исполняются по очереди с фиксированным квантом.
- Плюсы: справедливость для равноприоритетных задач.
- Минусы: непредсказуемость при высокой загрузке.
- Применение: фоновые задачи низкого приоритета.
2.2.3. На основе дедлайнов (EDF, Earliest Deadline First)
- Планировщик выбирает задачу с ближайшим сроком завершения.
- Плюсы: оптимальная загрузка CPU при динамических приоритетах.
- Минусы: высокие накладные расходы, сложность анализа.
- Применение: исследовательские RTOS, системы с жёсткими временными ограничениями.
2.2.4. Монотонный анализ скоростей (RMS, Rate Monotonic Scheduling)
- Приоритеты назначаются по частоте активации: чем чаще — тем выше.
- Теорема: система планируема, если суммарная загрузка ≤ n(2^(1/n) – 1), где n — число задач.
- Плюсы: формальная верифицируемость.
- Минусы: статические приоритеты, негибкость.
2.3. Управление переключением контекста
- Сохранение/восстановление регистров при переключении задач.
- Минимальный overhead (десятки тактов CPU).
- Поддержка FPU/SIMD — сохранение состояния сопроцессора.
- Tick‑based vs Tickless:
- Tick‑based — периодический системный таймер (проще, но тратит ресурсы).
- Tickless — динамические таймеры (энергоэффективнее).
2.4. Инверсии приоритетов и их устранение
- Проблема: низкоприоритетная задача держит ресурс, нужный высокоприоритетной.
- Решения:
- Протокол наследования приоритетов (Priority Inheritance Protocol, PIP) — временно повышает приоритет владельца ресурса.
- Протокол предельных приоритетов (Priority Ceiling Protocol, PCP) — заранее назначает максимальный приоритет для ресурса.
3. Механизмы IPC (Inter‑Process Communication)
3.1. Семафоры (Semaphores)
- Назначение: синхронизация доступа к ресурсам.
- Типы:
- Двоичный семафор (mutex) — взаимное исключение.
- Счётный семафор — управление пулом ресурсов (например, буферов).
- Операции:
take()— захватить (блокируется, если недоступен).give()— освободить.
- Особенности RTOS:
- поддержка наследования приоритетов;
- тайм‑ауты на захват.
3.2. Очереди сообщений (Message Queues)
- Назначение: передача данных между задачами.
- Механизм:
- отправитель кладёт сообщение в очередь;
- получатель извлекает (блокируется, если пусто).
- Параметры:
- глубина очереди;
- размер сообщения;
- политика переполнения (отбросить старое/новое).
- Плюсы:
- разделение данных и синхронизации;
- буферизация.
3.3. Каналы (Mailboxes)
- Назначение: передача указателей на данные (не самих данных).
- Механизм:
- задача отправляет указатель на буфер;
- получатель обрабатывает и возвращает буфер.
- Плюсы: низкая накладная нагрузка (передача указателя).
- Минусы: риск гонок, если буфер не защищён.
3.4. События (Event Flags)
- Назначение: уведомление задач о наступлении события.
- Механизм:
- набор битовых флагов;
- задачи ждут комбинации флагов (AND/OR).
- Плюсы: минимальные накладные расходы.
- Минусы: нет передачи данных.
3.5. Сигналы (Signals)
- Назначение: асинхронное уведомление задачи.
- Механизм:
- отправка сигнала по идентификатору задачи;
- обработчик сигнала выполняется в контексте задачи.
- Плюсы: гибкость.
- Минусы: сложность синхронизации.
3.6. Общая память (Shared Memory)
- Назначение: обмен большими объёмами данных.
- Требования:
- защита через мьютексы/семафоры;
- согласованность кэшей (в многопроцессорных системах).
- Плюсы: высокая пропускная способность.
- Минусы: риск гонок данных.
3.7. Сокеты и сетевые IPC
- Назначение: взаимодействие по сети (CAN, Ethernet, UART).
- Протоколы:
- POSIX‑совместимые сокеты (в некоторых RTOS);
- специализированные (CANopen, Modbus).
- Плюсы: масштабируемость.
- Минусы: задержки сети.
4. Примеры RTOS
4.1. FreeRTOS
- Особенности:
- открытый код (MIT License);
- малый размер ядра (3–10 КБ);
- поддержка множества архитектур (ARM, RISC‑V, PIC).
- IPC: очереди, семафоры, мьютексы, совайтинги (co‑routines).
- Планировщик: FPPS с опцией Round‑Robin.
4.2. QNX Neutrino
- Особенности:
- микроядро (message‑passing);
- высокая надёжность (авиация, медицина);
- POSIX‑совместимость.
- IPC: сообщения, сигналы, семафоры, разделяемая память.
- Планировщик: адаптивный (сочетание FPPS и EDF).
4.3. VxWorks
- Особенности:
- промышленная сертификация (DO‑178C, IEC 61508



