программирование на C ++ в операционной системе Linux реального времени

Есть ли какие-либо программы gotcha для программирования приложений RealTime C ++ (пространство пользователя и Linux-драйверы) в ядре RT linux по сравнению с ядром std linux?

Патч Linux RT применяет изменения к планировщику ядра, семафорам, муткам и т. Д., И мне интересно, прозрачны ли эти изменения для разработчика? или нужно будет проявлять особую осторожность при написании такого заявления?

2 Solutions collect form web for “программирование на C ++ в операционной системе Linux реального времени”

Зависит – если вы действительно разрабатываете драйверы пространства ядра, которые используют мьютексы и семафоры, вы должны дать патчи быстрый обзор. Как разработчик, который является вашей ответственностью, ни один ответ на сайте не решит эту проблему.

Если вы в основном разрабатываете программное обеспечение для пользователей, эти изменения не влияют на вас, поскольку вы только спорите с интерфейсами ядра, которые должны быть стабильными.

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

Из-за того, что большинство основных дистрибутивов поставляют ядро ​​RT, я заключаю: Нет, ничего особенного вне удовольствия от RT не требуется – вообще помните о вещах: https://rt.wiki.kernel.org/index.php/HOWTO: _Build_an_RT-приложение

У меня нет опыта программирования приложений RT с C ++: я использовал Ada; также Эрланг может поместиться. (Существует также RT Java, но у меня нет опыта.)

В принципе, использование C ++ не должно быть проблемой, учитывая инструменты для IPC (как вы упомянули), а также для мультипрограммирования: fork и т. Д. Явное управление памятью будет подвержено ошибкам, пока вы не освоите его.

RT Linux – это расширение для обычного Linux. (Это распространено для многих RTOS – это расширения для не-RT, но время-время, ОС).

Чтобы задачи RT сосуществовали с процессами, отличными от RT, RTOS принимает определенные меры: например, он блокирует задачи в памяти или присваивает им более высокие приоритеты, чем процессы. Цель состоит в том, чтобы гарантировать, что ни один процесс, не относящийся к RT, никогда не заблокирует задачу RT (таким образом, возможно, это приведет к тому, что он не достигнет своего крайнего срока), и весь смысл RTS заключается в том, чтобы это не происходило).

В случае RT Linux он назначит ядру Linux наименьший приоритет.

RT Linux находится ниже ядра Linux, чуть выше аппаратного обеспечения. Но ядро ​​Linux не обратит на это внимания: оно будет воспринимать аппаратное обеспечение и RT Linux как одно (то есть, как аппаратное обеспечение). Тем не менее, все аппаратные прерывания будут перехватываться ядром RT Linux, а некоторые (относящиеся к задачам RT) будут обрабатываться RTOS (остальное будет передано обычным ядром Linux для решения).

RT Linux использует алгоритмы планирования RT, которые обеспечивают «предсказуемое» поведение (в RT lingo), то есть все задачи отвечают их срокам. Это отличается от Linux, который не может делать никаких таких гарантий. Кроме того, RT Linux не поддерживает виртуальную память, так как это (сворачивание назад и вперед) приведет к гораздо более длинным (неограниченным) контекстным переключателям и, следовательно, непредсказуемым задержкам. (Фактически, все задачи RT Linux имеют полный доступ к оборудованию.)

  • CentOS - действует ненормально каждую неделю и приводит к отключению всей моей настройки, как я могу откат / восстановление до одной недели?
  • Kernelpanic Fedora 18 с ядром 3.9.2-200
  • Расположение адресного пространства ядра
  • Как узнать, какие драйверы файловой системы скомпилированы в ядре linux?
  • Предотвращение вращения внешнего USB-накопителя во время приостановки в ОЗУ
  • Что такое синхронизация во время загрузки ядра?
  • Можно ли запускать любой дистрибутив из ОЗУ из .iso, сохраненного в файловой системе NTFS?
  • В чем разница между «make» и «make oldconfig»
  • Как узнать, какой параметр конфигурации ядра включен моим драйвером?
  • Загрузите полную сборку ядра Linux
  • Запрещенное ограничение обработчика сигнала процесса инициализации pid-имен
  • Linux и Unix - лучшая ОС в мире.