Ольхонская полёвка
- 1 year ago
- 0
- 0
RTLinux — микроядерная операционная система жёсткого реального времени , которая выполняет Linux как полностью вытесняемый процесс. Работы над RTLinux завершились в 2007 году и на основе наработок этой ОС стартовал проприетарный проект Wind River .
Разработчики 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-интерфейс обработчика событий реального времени.