Vorteile eines RTOS wie QNX oder VxWorks anstelle von Linux?

14

Welche Vorteile hätte ein Betriebssystem wie QNX oder VxWorks gegenüber Linux bei der Entwicklung einer Lösung, die ein Echtzeitbetriebssystem erfordert?

Oder anders ausgedrückt: Da diese Betriebssysteme speziell für den eingebetteten Echtzeitgebrauch entwickelt wurden - im Gegensatz zu Linux, einem allgemeineren System, das auf den Echtzeitgebrauch zugeschnitten werden kann -, wann Sie eines dieser Betriebssysteme benötigen diese Betriebssysteme anstelle von Linux?

Justin Ethier
quelle

Antworten:

13

Einige eingebettete Systeme (a) müssen schwierige Echtzeitanforderungen erfüllen, und (b) haben nur sehr begrenzte Hardware (was es noch schwieriger macht, diese Anforderungen zu erfüllen).

Wenn Sie die Hardware nicht ändern können, gibt es mehrere Situationen, in denen Sie gezwungen sind, Linux auszuschließen und stattdessen etwas anderes zu verwenden:

  • Vielleicht hat die CPU nicht einmal eine MMU, was es unmöglich macht, Linux auszuführen (außer uClinux und meines Wissens ist uClinux nicht in Echtzeit).
  • Möglicherweise ist die CPU relativ langsam, und die Interrupt-Latenz im schlimmsten Fall in Linux erfüllt nicht die hohen Anforderungen, und einige andere RTOS-Systeme, die auf eine extrem niedrige Interrupt-Latenz im schlimmsten Fall ausgelegt sind, können die Anforderungen erfüllen.
  • Vielleicht hat das System sehr wenig RAM. Vor einigen Jahren erforderte ein minimales Linux-Setup etwa 2 MB RAM. Für ein minimales eCos-Setup (mit einer Kompatibilitätsebene, mit der einige Anwendungen ausgeführt werden können, die ursprünglich für Linux entwickelt wurden) wurden etwa 20 kB RAM benötigt.
  • Möglicherweise gibt es keinen Linux-Port für Ihre Hardware, und es fehlt die Zeit, Linux zu portieren, bevor Sie Ihr System starten müssen (Wortspiel!). Viele der einfacheren RTOSs benötigen viel weniger Zeit als Linux, um auf neue Hardware zu portieren.
David Cary
quelle
Welche Art von Code ist zwischen den verschiedenen RTOS übertragbar? Ich habe auch gehört, dass einige Lösungen von oben nach unten (unter Verwendung von RTOS) erstellt werden, während andere von unten nach oben erstellt werden (indem OS-Funktionen schrittweise hinzugefügt werden, wenn Sie sie benötigen).
CMCDragonkai
@CMCDragonkai: Programme, die in die EL / IX-API geschrieben wurden, können auf jedem EL / IX-kompatiblen Betriebssystem ausgeführt werden. In die POSIX-API geschriebene Programme können auf jedem POSIX-kompatiblen Betriebssystem ausgeführt werden. Programme, die in die uITRON-API geschrieben wurden, können auf jedem uITRON-kompatiblen Betriebssystem ausgeführt werden.
David Cary
@ CMCDragonkai: Vielleicht wäre die programmers.stackexchange.com besser geeignet, um Fragen zu den verschiedenen RTOS zu stellen?
David Cary
8

Ich habe überhaupt keine Echtzeitarbeit geleistet, also nimm das mit einem Körnchen Salz ...

Mir wurde gesagt, dass es zwei Kategorien von "Echtzeit" gibt: harte Echtzeit und weiche Echtzeit.

"Weiche Echtzeit" bedeutet informell "Erledige es so schnell wie möglich". Ich denke, dass Linux auf einer modernen CPU für so etwas gut ist.

"Harte Echtzeit" bedeutet informell "Erledige es innerhalb eines erforderlichen Zeitfensters". Das Fenster kann ziemlich klein sein, Millisekunden oder so. Flugsteuerungssysteme für Marschflugkörper oder Satelliten-Trägerraketen scheinen das kanonische Beispiel zu sein. Möglicherweise benötigen auch industrielle Prozessleitsysteme dies. Der Stuxnet-Wurm scheint in Systeme eingegriffen zu haben, die diese Art der Steuerung durchführen.

In letzterem Fall würden Sie RTOS verwenden. RTOS garantiert oft die Auslieferung eines Interrupts in weniger als so vielen Befehlen oder Takten oder was auch immer.

Eine weitere Überlegung könnte sein, dass ein RTOS so konzipiert, getestet und / oder "geprüft" ist, dass es keinen uneingeschränkten Stapelspeicher belegt. Es kann innerhalb einer bestimmten Mindestmenge an Speicher leben, und Dinge wie ein "OOM Killer" existieren nicht, weil sie nachweislich nie benötigt werden. Einige der gooferen Merkmale von FORTRAN in der Frühphase sind auf diese Art von Anforderung zurückzuführen. Als Sie ein FORTRAN II-Programm kompilierten, wussten Sie genau, wie viel Stapel und wie viel Heap es benötigte, da Sie nicht rekursiv arbeiten und nichts dynamisch zuweisen konnten.

Realistisch gesehen ist die zweite Überlegung (garantierter maximaler Speicherverbrauch) in einigen sicherheitskritischen Anwendungen möglicherweise wichtiger als die "garantierte Interrupt-Latenz von 0,001 Sekunden".

Ich könnte mir auch vorstellen, dass Ingenieure ein RTOS auswählen, wenn sie den Auswahlprozess des Feigenblatts der unterstützenden Redewendung streifen, weil "die Anforderungen sagen zu".

Bruce Ediger
quelle