Jump to content

РТЛинукс

РТЛинукс
Оригинальный автор(ы) Victor Yodaiken, Michael Barabanov
Разработчик(и) ФСМЛабс, Wind River Systems
Написано в С
Операционная система Линукс
Доступно в Английский
Тип Ядро
Лицензия GPL2

RTLinux — это операционной системы реального времени (RTOS) микроядро , которое запускает всю Linux операционную систему как полностью вытесняющий процесс. Свойство жесткого реального времени позволяет управлять роботами, системами сбора данных, производственными предприятиями и другими чувствительными ко времени инструментами и машинами из приложений RTLinux. Конструкция была запатентована. [1] Несмотря на похожее название, оно не имеет отношения к Real-Time Linux проекту Linux Foundation . [2]

RTLinux был разработан Виктором Йодайкеном, Майклом Барабановым, Кортом Дуганом и другими в Институте горного дела и технологий Нью-Мексико , а затем как коммерческий продукт в FSMLabs. Wind River Systems приобрела встроенную технологию FSMLabs в феврале 2007 года и выпустила версию Wind River Real-Time Core для Wind River Linux . По состоянию на август 2011 года Wind River прекратила выпуск линейки продуктов Wind River Real-Time Core, фактически прекратив коммерческую поддержку продукта RTLinux.

Предыстория [ править ]

Ключевая цель разработки RTLinux [3] Целью было добавить возможности жесткого реального времени к стандартной операционной системе, чтобы облегчить разработку сложных программ управления с обеими возможностями. [4] [5] Например, можно разработать контроллер двигателя реального времени, который использовал бы базу данных товаров и экспортировал интерфейс веб-оператора. Вместо того, чтобы пытаться создать единую операционную систему, которая могла бы поддерживать возможности реального и нереального времени, RTLinux был разработан для совместного использования вычислительного устройства между операционной системой реального и нереального времени, чтобы (1) Операционная система реального времени никогда не может быть заблокирована от выполнения операционной системой, не работающей в режиме реального времени, и (2) компоненты, работающие в двух разных средах, могут легко обмениваться данными. Как следует из названия, RTLinux изначально был разработан для использования Linux в качестве системы, не работающей в режиме реального времени. [6] но со временем оно развилось так, что ядро ​​реального времени RTCore могло работать как с Linux, так и с Berkeley Software Distribution (BSD) Unix .

Multi-Environment Real-Time (MERT) был первым примером операционной системы реального времени, сосуществующей с системой Unix. MERT полагался на традиционные методы виртуализации: ядром реального времени была хостовая операционная система (или гипервизор ), а Bell Systems Unix — гостевая система . RTLinux был попыткой обновить концепцию MERT с учетом эпохи ПК и массового оборудования. Это также была попытка преодолеть ограничения производительности MERT, особенно накладные расходы, вызванные виртуализацией.

Вместо инкапсуляции гостевой ОС в виртуальную машину RTLinux виртуализировал только управление гостевыми прерываниями. Этот метод позволил ядру реального времени преобразовать гостевую операционную систему в систему, которая была полностью вытесняемой, но при этом могла напрямую управлять, например, устройствами хранения данных. В частности, стандартные драйверы для гостя работали без изменения исходного кода, хотя их нужно было перекомпилировать для использования «хуков» виртуализации. См. также паравиртуализация . Unix Канал был адаптирован для обеспечения взаимодействия программ как в реальном времени, так и не в реальном времени, хотя были также добавлены и другие методы, такие как общая память.

С точки зрения программиста, RTLinux изначально выглядел как небольшая многопоточная среда для задач реального времени плюс стандартная среда Linux для всего остального. Операционная система реального времени была реализована в виде загружаемого модуля ядра , который начинался с виртуализации управления гостевыми прерываниями, а затем запускал планировщик реального времени. Задачам были назначены статические приоритеты, и планирование изначально основывалось исключительно на приоритетах. Гостевая операционная система была включена в качестве задачи с самым низким приоритетом и, по сути, выполняла роль простаивающей задачи для системы реального времени. Задачи реального времени выполнялись в режиме ядра. Более поздняя разработка RTLinux приняла интерфейс переносимой операционной системы ( POSIX ) и потоков POSIX интерфейс прикладного программирования ( API ), а затем разрешила создание потоков в пользовательском режиме с потоками, работающими в реальном времени внутри гостевых процессов. В многопроцессорных средах потоки были привязаны к ядрам процессора, и можно было предотвратить запуск гостевого потока на назначенном ядре (фактически резервируя ядра только для обработки в реальном времени).

Реализация [ править ]

RTLinux предоставляет возможность запускать специальные задачи реального времени и обработчики прерываний на той же машине, что и стандартный Linux. Эти задачи и обработчики выполняются тогда, когда им необходимо выполнить, независимо от того, что делает Linux. Наихудшее время между моментом обнаружения процессором аппаратного прерывания и моментом начала выполнения обработчика прерывания составляет менее 15 микросекунд в RTLinux, работающем на универсальной платформе x86 (около 2000 г.). Периодическая задача RTLinux выполняется в пределах 35 микросекунд от запланированного времени на том же оборудовании. Это время ограничено аппаратным обеспечением, и по мере совершенствования оборудования RTLinux также будет улучшаться. Стандартный Linux имеет отличную среднюю производительность и может даже обеспечить точность планирования на уровне миллисекунд для задач, использующих возможности POSIX мягкого реального времени. Однако стандартный Linux не предназначен для обеспечения точности до миллисекунды и надежных гарантий синхронизации. RTLinux был основан на облегченной виртуальной машине, где «гостю» Linux предоставлялся виртуальный контроллер прерываний и таймер, а доступ ко всему остальному оборудованию был прямым. С точки зрения «хоста» реального времени ядро ​​Linux представляет собой поток. Прерывания, необходимые для детерминированной обработки, обрабатываются ядром реального времени, в то время как другие прерывания перенаправляются в Linux, который работает с более низким приоритетом, чем потоки реального времени. Драйверы Linux обрабатывают почти все ввод/вывод . Каналы «первым пришел — первым обслужен» ( FIFO ) или общая память могут использоваться для обмена данными между операционной системой и RTLinux.

Цель [ править ]

Ключевая цель разработки RTLinux заключается в том, что система должна быть прозрачной, модульной и расширяемой. [ нужна ссылка ] . Прозрачность означает, что не существует неоткрываемых черных ящиков и стоимость любой операции должна быть определена. Модульность означает, что можно отказаться от функциональности и затрат на эту функциональность, если она не нужна. А расширяемость означает, что программисты должны иметь возможность добавлять модули и адаптировать систему к своим требованиям. Базовая система RTLinux поддерживает высокоскоростную обработку прерываний и не более того. Он имеет простой планировщик приоритетов, который можно легко заменить планировщиками, более подходящими для нужд какого-либо конкретного приложения. При разработке RTLinux он был разработан для максимизации преимуществ, которые мы получаем от наличия Linux и его мощных возможностей.

Основные компоненты [ править ]

RTLinux структурирован как небольшой основной компонент и набор дополнительных компонентов. Базовый компонент позволяет устанавливать обработчики прерываний с очень низкой задержкой, которые не могут быть задержаны или вытеснены самим Linux, а также некоторые низкоуровневые процедуры синхронизации и управления прерываниями. Этот основной компонент был расширен для поддержки SMP и в то же время упрощен за счет удаления некоторых функций, которые могут предоставляться вне ядра.

Функции [ править ]

Большинство функций RTLinux находятся в наборе загружаемых модулей ядра, которые предоставляют дополнительные сервисы и уровни абстракции. Эти модули включают в себя:

  1. rtl sched — планировщик приоритетов, который поддерживает как интерфейс «lite POSIX», описанный ниже, так и исходный API RTLinux V1.
  2. rtl time — который управляет часами процессора и экспортирует абстрактный интерфейс для подключения обработчиков к часам.
  3. rtl posixio — поддерживает интерфейс чтения/записи/открытия в стиле POSIX для драйверов устройств.
  4. rtl fifo — соединяет задачи RT и обработчики прерываний с процессами Linux через уровень устройства, чтобы процессы Linux могли читать/записывать в компоненты RT.
  5. семафор — пакет, предоставленный Джерри Эпплином, который дает задачи RT, блокирующие семафоры.
  6. Планируется, что поддержка мьютексов POSIX будет доступна в следующем незначительном обновлении версии RTLinux.
  7. mbuff — это пакет, написанный Томашем Мотылевским для обеспечения общей памяти между компонентами RT и процессами Linux.

Задачи в реальном времени [ править ]

Задачи реального времени RTLinux реализуются в виде модулей ядра, аналогичных модулям, которые Linux использует для драйверов, файловых систем и т. д. Задачи реального времени имеют прямой доступ к оборудованию и не используют виртуальную память. При инициализации задача (модуль) реального времени сообщает ядру RTLinux об ограничениях крайнего срока, периода и времени выпуска.

Темы [ править ]

RT-Linux реализует POSIX API для манипулирования потоками. Поток создается путем вызова pthread_create функция. Третий параметр pthread_create — это функция, содержащая код, выполняемый потоком.

Необходимо установить приоритеты потоков в RTLinux. Потоки с более высоким приоритетом могут вытеснять потоки с более низким приоритетом. Например, у нас может быть поток, управляющий шаговым двигателем. Чтобы мотор двигался плавно, необходимо запускать эту нить строго через равные промежутки времени. Это можно гарантировать, назначив этому потоку высокий приоритет. В примере threads2.c устанавливаются разные приоритеты потоков. Установка приоритета потока выполняется с помощью кода, показанного ниже:

int init_module(void)
{
pthread_attr_t attr;
struct sched_param param;
pthread_attr_init(&attr);
param.sched_priority = 1;
pthread_attr_setschedparam(&attr, &param);
pthread_create(&t1, &attr, &thread_code, "this is thread 1");
rtl_printf("Thread 1 started\n");
...
}

Вывод программы следующий.

Thread 1 started
Thread 2 started
Thread 3 started
Message: this is thread 1
Message: this is thread 2
Message: this is thread 2
Message: this is thread 2
Message: this is thread 1
Message: this is thread 1
Message: this is thread 3
Message: this is thread 3
Message: this is thread 3

Поток 2 имеет наивысший приоритет, а поток 3 — наименьший. Первое сообщение печатается потоком 1 со средним приоритетом, поскольку оно запускается незадолго до потока 2.

См. также [ править ]

Ссылки [ править ]

  1. ^ йодайкен, победитель. «Добавление поддержки реального времени в операционные системы общего назначения» . ВПТЗ США . ВПТЗ США . Проверено 19 января 2022 г.
  2. ^ «realtime:start [Linux Foundation Wiki]» . wiki.linuxfoundation.org .
  3. ^ Барабанов Михаил. Представляем RTLinux (отчет). Linux-журнал. CiteSeerX   10.1.1.302.3221 .
  4. ^ Йодайкен, Виктор (1999). Манифест RTLinux (PDF) (отчет). Материалы 5-й конференции по Linux.
  5. ^ Йодайкен, Виктор (1996). Исследование дешевых операционных систем (Отчет). Кембридж, Массачусетс: Материалы первой конференции по свободно распространяемым системам. CiteSeerX   10.1.1.39.9505 .
  6. ^ Barabanov, Michael (1996). A Linux Based Real-Time Operating System (PDF) (M.S.).

Источники [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a9f0da40c0aec6068a620df28ae0ebb9__1705405620
URL1:https://arc.ask3.ru/arc/aa/a9/b9/a9f0da40c0aec6068a620df28ae0ebb9.html
Заголовок, (Title) документа по адресу, URL1:
RTLinux - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)