Информационные технологии

Системы реального времени

Система реального времени (СРВ) – это система, правильность функционирования которой зависит не только от логической корректности вычислений, но и от времени, за которое эти вычисления производятся.

Системой жесткого реального времени называется система, где неспособность обеспечить реакцию на какие-либо события в заданное время является отказом и ведет к невозможности решения поставленной задачи. Время реакции в системах жесткого реального времени должно быть минимальным. Большинство систем жесткого реального времени являются системами контроля и управления. Такие СРВ сложны в реализации, так как к ним предъявляются особые требования в вопросах безопасности.

Точного определения мягкого реального времени не существует, поэтому можно отнести сюда все СРВ, не подпадающие под категорию жестких. Так, система мягкого реального времени может не успевать все делать в заданное время, поэтому возникает проблема определения критериев успешности (нормальности) ее функционирования.

Кроме того, СРВ можно разделить на системы специализированные и универсальные.

Специализированная СРВ – система, где конкретные временные требования изначально определены. Такая система должна быть специально спроектирована для удовлетворения этих требований.

Универсальная СРВ должна уметь выполнять произвольные (заранее неопределенные) временные задачи без применения специальной техники. Разработка таких систем является самой сложной задачей, хотя обычно, требования, предъявляемые к таким системам, мягче, чем требования к специализированным системам.

Основные требования к СРВ:

  • возможность параллельного выполнения нескольких задач;
  • предсказуемость;
  • важно максимальное (не среднее) время отклика на событие;
  • особые требования в вопросах безопасности;
  • возможность безотказной работы в течение длительного времени.

Для задач РВ сообщество разработчиков Linux активно применяет специальные расширения, позволяющие получить устойчивую среду реального времени – RTLinux(представляет собой систему «жесткого» реального времени), KURT ((KU Real Time Linux) относится к системам «мягкого» реального времени) и Linux-расширение UTIME, входящее в состав KURT, позволяет добиться увеличения частоты системных часов, что приводит к более быстрому переключению контекста задач.

Проект KURT характеризуется минимальными изменениями ядра Linux и предусматривает два режима работы – нормальный (normal mode) и режим реального времени (real-time mode). Программный пакет KURT оформлен в виде отдельного системного модуля Linux – RTMod, который становится дополнительным планировщиком реального времени. При переключении в режим реального времени все процессы в системе «засыпают» до момента освобождения ветви процесса реального времени. Используя KURT совместно с UTIME, можно довести время переключения контекста задач до 1 мс. Прерывания обрабатываются стандартным для ОС Linux образом – через механизм драйверов.

RTLinux – это дополнение к ядру Linux, реализующее режим «жесткого» реального времени, которое позволяет управлять различными чувствительными ко времени реакции системы процессами. RTLinux организован способом, в котором простое ядро реального времени запускает обычное ядро как одну из задач реального времени с самым низким приоритетом, используя виртуальную машину для того, чтобы сделать стандартное ядро полностью прерываемым.

Windows NT «в чистом виде» нельзя отнести к операционным системам реального времени. Одним из возможных решений является использование совместно с Windows NT подсистемы реального времени, исполняющейся на том же процессоре или на выделенном процессоре (если их несколько). Этот подход использован фирмой VenturCom в продукте RTX. Сущность подхода заключается в использовании модифицированного HAL (Hardware Abstraction Level). Изменять kernel Microsoft не разрешает, а исходный код HAL предоставляет своим партнерам, одним из которых является VenturCom. После установки RTX стандартная NT Workstation или Server превращается в операционную систему реального времени с жестким детерминизмом (hard real-time). Подсистема реального времени видна из Windows NT как еще один драйвер устройства.

С точки зрения реализации, подсистема реального времени RTSS выглядит как драйвер Windows NT и выполняется в режиме ядра. Это позволяет достаточно простым способом устроить взаимодействие между процессами реального времени и процессами Windows NT.

Операционная система реального времени QNX ОС QNX была создана программистами канадской компании QNX Software System Ltd. в 1981 году и с этого момента она заняла лидирующее место среди систем реального времени, существующих на тот момент на рынке благодаря многим особенностям, присущим только ей. Среди таких особенностей:

  • Архитектура истинного (или реального – англ. real) микроядра;
  • Компактность ядра системы (порядка 10 Кб);
  • Масштабируемость и расширяемость системы;
  • Быстродействие (быстрая реакция на аппаратные прерывания и быстрое контекстное переключение между задачами);
  • «Прозрачная» сетевая модель работы – в сеть может быть добавлен или удален любой узел без вреда для остальных участников;
  • QNX – система, основанная на обмене сообщениями

Обмен сообщениями обеспечивает не только передачу информации, но является способом синхронизации параллельной работы нескольких процессов. Имея информацию о приоритетах и состояниях процессов, микроядро может управлять работой процессов как можно эффективней с точки зрения распределения ресурсов системы. Этот единственный согласующий метод – обмен сообщениями – действует внутри всей системы.

QNX – первая коммерческая ОС, построенная на принципах микроядра и обмена сообщениями.

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

Истинное ядро. Как известно, ядро – это сердце любой операционной системы. Ядро QNX очень мало в размерах и содержит только две основные функции:

  • Управление прохождением сообщений – микроядро управляет прохождением всех сообщений между процессами;
  • Управление выполнением запущенных процессов (диспетчеризация процессов). Диспетчер – это часть самого микроядра, и он запускается всякий раз, когда какой-либо процесс изменил свое состояние в результате получения сообщения или в результате выполнения аппаратного прерывания.

Все службы QNX, исключая внутренние службы самого ядра, управляются стандартными (системными) процессами. Типичная конфигурация QNX включает в себя следующие системные процессы:

  • Менеджер процессов (Proc);
  • Менеджер файловой системы (Fsys);
  • Менеджер устройств (Dev);
  • Менеджер сети (Net).

Таким образом, сервисы микроядра: управление потоками выполнения, взаимодействие потоков (IPC), примитивы синхронизации. Все остальное, включая драйверы, сетевые протоколы и приложения любого уровня, работает как отдельные процессы, сообщаясь с ядром с помощью синхронных сообщений.

Преимущества QNX. Система реализована в виде совокупности независимых (но взаимодействующих через обмен сообщениями) процессов различного уровня (менеджеры и драйверы), каждый из которых реализует определенный вид сервиса.

Эти идеи позволили добиться нескольких важнейших преимуществ:

  • предсказуемость, означающая ее применимость к задачам жесткого реального времени. Ни одна версия UNIX не может достичь подобного качества, поскольку код ядра слишком велик. Любой системный вызов из обработчика прерывания в UNIX может привести к непредсказуемой задержке (как и в Windows NT);
  • масштабируемость и эффективность, достигаемые оптимальным использованием ресурсов и означающие ее применимость для встроенных (embedded) систем. Драйверы и менеджеры можно запускать и удалять (кроме файловой системы) динамически, просто из командной строки. Возможна также покупка только тех модулей, которые реально необходимы для обеспечения нужных функций;
  • расширяемость и надежность одновременно, поскольку написанный драйвер не нужно компилировать в ядро, рискуя вызвать нестабильность системы.

ОС QNX имеет все необходимые возможности, нужные для работы во встраиваемых многозадачных системах. Она компактна, мощна, легко расширяема, быстра. Благодаря этим и многим другим своим особенностям ОС QNX заняла свое положение на рынке систем реального времени. Также следует ожидать дальнейшего распространение операционной системы реального времени QNX и появление новых прикладных программных средств под эту платформу.

Д.М. Калпашникова