RTLinux — микроядерная операционная система жёсткого реального времени, которая выполняет Linux как полностью вытесняемый процесс. Работы над RTLinux завершились в 2007 году и на основе наработок этой ОС стартовал проприетарный проект Wind River.
RTLinux | |
---|---|
Тип | Операционная система реального времени |
Разработчики | Виктор Йодаикен, Михаил Барабанов (en:New Mexico Institute of Mining and Technology), FSMLabs, Wind River Systems |
Написана на | C |
Операционная система | Linux |
Первый выпуск | 1996 |
Лицензия | GPLv2 |
Сайт | rt.wiki.kernel.org/index… |
Особенности реализации
правитьРазработчики RTLinux пошли по тому пути, который предусматривает запуск из наноядра реального времени ядра Linux как задачи с наименьшим приоритетом. В RTLinux все прерывания обрабатываются ядром реального времени, которое включает собственный планировщик задач, обработчик прерываний и библиотечный код. В случае отсутствия обработчика реального времени для какого-то прерывания оно передаётся в Linux. Фактически Linux является простаивающей (idle) задачей ОСРВ, запускаемой только в том случае, если никакая задача не исполняется в реальном времени. При этом на Linux-задачу накладываются некоторые ограничения, которые, впрочем, прозрачны для программиста.
Linux не может выполнять следующие операции:
- блокировать аппаратные прерывания;
- предохранять себя от вытеснения другой задачей.
Ключ к реализации данной системы — эмулирующий систему управления прерываниями драйвер, к которому обращается Linux при попытке блокировать прерывания. В этом случае драйвер перехватывает запрос, сохраняет его и возвращает управление Linux.
Все аппаратные прерывания перехватываются ядром ОСРВ. Когда происходит прерывание, ядро RTLinux решает, что делать. Если это прерывание должно быть обработано обработчиком реального времени, то ядро вызывает соответствующий обработчик. В противном случае или если обработчик реального времени говорит, что хочет разделять это прерывание с Linux, обработчику присваивается состояние ожидания (pending). Если Linux потребовал разрешить прерывания, то прерывания, которые находятся в состоянии ожидания, эмулируются.
Ядро RTLinux спроектировано таким образом, что ядро реального времени никогда не нуждается в ожидании освобождения ресурса, занятого Linux-процессом.
Для обмена данными между ОСРВ и Linux предусмотрены следующие средства:
- разделяемые области памяти;
- псевдоустройства, которые предоставляют возможность обмена данными с приложениями реального времени.
Ключевой принцип построения RTLinux — как можно больше использовать Linux и как можно меньше RTLinux. Действительно — Linux заботится об инициализации системы и устройств, а также о динамическом выделении ресурсов. На RTLinux ложится только планирование задач реального времени и обработка прерываний. Процессы реального времени реализованы в виде загружаемых модулей Linux для простоты запуска в контексте ядра, сохранения модульности и расширяемости системы.
Приложение реального времени с RTLinux, как правило, состоит из двух независимых частей: процесса, исполняемого ядром RTLinux, и обыкновенного Linux-приложения.
Такой модульный подход к написанию приложений присущ многим расширениям реального времени для многоцелевых систем, где задача реального времени работает независимо от ОС. Разработчики уже приняли схему, по которой критичные ко времени реакции задачи программируются с помощью API-интерфейсов, предусмотренных расширением реального времени, а все функции сервиса и интерфейса с пользователем возлагается на мощь операционной системы. При использовании данного подхода программисту нужно изучить только API-интерфейс обработчика событий реального времени.
Недостатки реализации RTLinux
править- Приложения реального времени выполняются в пространстве ядра, следовательно, они могут переписать часть памяти ядра и сломать систему
- Взаимодействие между RT-подсистемой и Linux не может быть реального времени
- Ядро Linux выполняется в бэкграунде, следовательно, задачи Linux могут испытывать большие задержки
- Невозможно использовать драйверы Linux в задачах реального времени, следовательно, разработчики приложений реального времени вынуждены переписывать драйверы устройств поверх RT-подсистемы
Другие расширения реального времени для Linux
правитьСписок примеров в этой статье не основывается на авторитетных источниках, посвящённых непосредственно предмету статьи. |
- KURT
- Xenomai
- en:RTAI
- en:RMX
- Advanced Real-Time Linux Архивная копия от 14 февраля 2012 на Wayback Machine — ОС жёсткого РВ на основе Linux для использования в робототехнике.
Ссылки
править- RTLinux-GPL GPL Версия. No longer being updated Архивная копия от 10 марта 2007 на Wayback Machine
- Real-Time Linux Wiki — альтернативный проект, известный как CONFIG_PREEMPT_RT patch Архивная копия от 19 декабря 2008 на Wayback Machine
- Real Time Linux Foundation Архивная копия от 16 октября 2007 на Wayback Machine
- RTLinuxFree Open Source Version. Back online 8/18/2007. Архивная копия от 27 февраля 2007 на Wayback Machine
- Wind River Supply RTLinuxPro / Wind River Real-Time Core — Коммерческая версия RTLinux Архивная копия от 4 октября 2006 на Wayback Machine
- Original supplier of RTLinuxPro Архивная копия от 14 января 2007 на Wayback Machine
- electronica.org.in/ Here you can get enough materials/projects/discussion forums for RTLinux
- this helps you to understand RT concept. Архивировано из оригинала 28 января 2013 года.
- it gives a downloadable kernel patch along with the documentaion. Архивная копия от 26 сентября 2007 на Wayback Machine