Was ist ein Real-Time-Betriebssystem (RTOS)?

Überblick

Ein Real-Time-Betriebssystem verarbeitet Daten und führt Tasks unter strengen Zeitvorgaben und mit hoher Zuverlässigkeit und Genauigkeit aus. Ein RTOS kann kritisch sein in Situationen, in denen Verzögerungen möglicherweise zu Betriebs- oder Sicherheitsrisiken führen, weshalb in Industriesystemen, Fahrzeugsteuerungen und medizinischen Geräten häufig Real-Time-Betriebssysteme eingesetzt werden. In diesem Beitrag wird ausführlich auf Real-Time-Betriebssysteme eingegangen, z. B. inwiefern sie sich für Mess- und Regelanwendungen eignen und wie sie sich von allgemeinen Standardbetriebssystemen wie Windows unterscheiden.

Inhalt

Einführung in Real-Time-Betriebssysteme

In den folgenden Abschnitten werden grundlegende Konzepte und Terminologie zu Real-Time-Betriebssystemen erläutert. Nach dem Lesen dieser Einführung können Sie unter Erstellen von Real-Time-Systemen mit Hardware und Software von NI mehr darüber erfahren, wie NI Ihnen helfen kann, unter geringstmöglichem Zeitaufwand ein leistungsstarkes Real-Time-System zu erstellen.

„Harte“ (Hard) vs. „weiche“ (Soft) Real-Time-Betriebssysteme

Im Allgemeinen ist ein Betriebssystem (OS) für die Verwaltung der Hardwareressourcen eines Computers und das Hosten von Anwendungen verantwortlich, die auf dem Computer ausgeführt werden. Ein RTOS führt diese Aufgaben aus, ist aber auch speziell für die Ausführung von Anwendungen mit sehr genauem Timing und hoher Zuverlässigkeit konzipiert. Diese Zuverlässigkeit kann besonders bei Mess- und Automatisierungssystemen wichtig sein, bei denen Ausfallzeiten kostspielig sind oder eine Programmverzögerung gefährlich sein kann.

Um als „Real-Time“-Betriebssystem zu gelten, muss ein Betriebssystem eine bekannte maximale Zeit für jede der kritischen Operationen aufweisen, die es ausführt (oder zumindest in der Lage sein, diesen Maximalwert für den Großteil der Zeit zu garantieren). Einige dieser Operationen umfassen Betriebssystemaufrufe und die Verarbeitung von Interrupts. Betriebssysteme, die eine maximale Zeit für diese Operationen absolut garantieren können, werden üblicherweise als „harte“ Real-Time-Betriebssysteme bezeichnet, während Betriebssysteme, die nur die meiste Zeit eine maximale Zeit garantieren können, als „weiche“ Real-Time-Betriebssysteme bezeichnet werden. In der Praxis sind diese strengen Kategorien nur begrenzt nützlich – jede RTOS-Lösung weist einzigartige Leistungsmerkmale auf, die der Benutzer gründlich untersuchen sollte.

Diese Konzepte lassen sich am besten anhand eines Beispiels verstehen. Stellen Sie sich vor, Sie entwerfen ein Airbag-System für ein neues Fahrzeugmodell. In diesem Fall kann ein minimaler Timing-Fehler (durch den der Airbag zu früh oder zu spät ausgelöst wird) katastrophal sein und zu Verletzungen führen. Daher ist ein hartes Real-Time-Betriebssystem erforderlich, denn Sie als Systementwickler benötigen Sicherheit, dass keine einzige Operation bestimmte Zeitbeschränkungen überschreitet. Wenn Sie auf der anderen Seite ein Mobiltelefon entwerfen, das Streaming-Video empfangen soll, kann es in Ordnung sein, gelegentlich eine kleine Menge an Daten zu verlieren, obwohl es im Durchschnitt wichtig ist, mit dem Video-Stream Schritt zu halten. Für diese Anwendung kann ein weiches Real-Time-Betriebssystem ausreichen.

Der Hauptpunkt ist, dass ein RTOS bei korrekter Programmierung die Ausführung eines Programms mit sehr einheitlichem Timing garantieren kann. Real-Time-Betriebssysteme ermöglichen dies, indem sie Programmierern ein hohes Maß an Kontrolle darüber geben, wie Tasks priorisiert werden. In der Regel können sie auch überprüfen, ob wichtige Fristen eingehalten werden.

Im Gegensatz zu Real-Time-Betriebssystemen werden die gängigen Betriebssysteme für Personal Computer (wie z. B. Windows) als allgemeine Betriebssysteme bezeichnet. Im Folgenden finden Sie detaillierte technische Informationen darüber, wie sich Real-Time-Betriebssysteme von allgemeinen Betriebssystemen unterscheiden. Dabei darf nicht vergessen werden, dass beide Betriebssystemtypen Vor- und Nachteile haben. Betriebssysteme wie Windows sind so konzipiert, dass der Benutzer auch bei vielen ausgeführten Programmen und Diensten weiterhin reagieren kann (sodass „Fairness“ gewährleistet ist). Real-Time-Betriebssysteme hingegen sind so ausgelegt, dass kritische Anwendungen zuverlässig und mit genauem Timing (unter Beachtung der Prioritäten des Programmierers) ausgeführt werden.

Wichtige Terminologie und Konzepte

Determinismus: Eine Anwendung (oder ein kritischer Teil einer Anwendung), die auf einem harten Real-Time-Betriebssystem ausgeführt wird, gilt als deterministisch, wenn ihr Timing innerhalb einer bestimmten Fehlertoleranz garantiert werden kann.

Hartes vs. weiches Real-Time-Betriebssystem: Ein Betriebssystem, das eine maximale Zeit für die ausgeführten Operationen absolut garantieren kann, wird als hartes Real-Time-Betriebssystem bezeichnet. Im Gegensatz dazu wird ein Betriebssystem, das Operationen üblicherweise innerhalb einer bestimmten Zeit durchführen kann, als weiches Real-Time-Betriebssystem bezeichnet.

Jitter: Die Größe des Fehlers beim Timing eines Tasks über nachfolgende Iterationen eines Programms oder einer Schleife wird als Jitter bezeichnet. Real-Time-Betriebssysteme sind so optimiert, dass sie bei korrekter Programmierung ein geringes Maß an Jitter aufweisen. Ein Task benötigt bei jeder Ausführung stets ungefähr dieselbe Zeit.

Jitter ist ein Maß dafür, wie stark sich die Ausführungsdauer eines Tasks in nachfolgenden Iterationen unterscheidet. Real-Time-Betriebssysteme sind so optimiert, dass Jitter minimiert wird.

Abbildung 1: Jitter ist ein Maß dafür, wie stark sich die Ausführungszeit eines Tasks in nachfolgenden Iterationen unterscheidet. Real-Time-Betriebssysteme sind so optimiert, dass Jitter minimiert wird.

Beispiele für Real-Time-Anwendungen

Real-Time-Betriebssysteme wurden für zwei allgemeine Anwendungsklassen entwickelt: Ereignisreaktion und Regelung. Bei Ereignisreaktionsanwendungen, wie die automatische Sichtprüfung von Fließbandteilen, muss innerhalb einer bestimmten Zeit eine Reaktion auf einen Stimulus folgen. Bei diesem Sichtprüfungssystem muss beispielsweise jedes Teil fotografiert und analysiert werden, bevor sich das Fließband in Bewegung setzt.

Durch die sorgfältige Programmierung einer Anwendung, die auf einem harten Real-Time-Betriebssystem ausgeführt wird, können Entwickler, die an Ereignisreaktionsanwendungen arbeiten, garantieren, dass eine Antwort deterministisch (innerhalb einer bestimmten maximalen Zeit) erfolgt. Das Beispiel der Teileprüfung verdeutlicht, dass die Verwendung eines allgemeinen Betriebssystems dazu führen kann, dass ein Teil nicht rechtzeitig geprüft wird. Dadurch verzögert sich die Montage, das Teil wird verworfen oder es wird ein möglicherweise defektes Teil geliefert.

Regelsysteme, wie z. B. eine Geschwindigkeitsregelanlage in einem Fahrzeug, verarbeiten dagegen kontinuierlich Rückkopplungsdaten, um einen Ausgang oder mehrere Ausgänge anzupassen. Da jeder Ausgangswert von der Verarbeitung der Eingangsdaten in einem festen Zeitraum abhängt, ist es wichtig, dass Schleifenfristen eingehalten werden, um sicherzustellen, dass die richtigen Ausgangswerte erzeugt werden. Was würde geschehen, wenn eine Geschwindigkeitsregelanlage nicht in der Lage wäre, die richtige Drosselklappenstellung zu einem bestimmten Zeitpunkt zu bestimmen? Auch in diesem Fall können harte Real-Time-Betriebssysteme garantieren, dass die Eingangsdaten des Regelsystems in einer einheitlichen Zeitspanne verarbeitet werden (mit einem festen Worst-Case-Maximum).

Beachten Sie auch, dass viele Anwendungen, die über längere Zeiträume ausgeführt werden müssen, von der Zuverlässigkeit eines RTOS profitieren können. Da Real-Time-Betriebssysteme in der Regel nur ein Mindestmaß an Software ausführen, anstatt viele Anwendungen und Prozesse gleichzeitig, eignen sie sich gut für Systeme, die einen Betrieb rund um die Uhr (24/7) erfordern oder bei denen Ausfallzeiten inakzeptabel oder teuer sind.

Wenn Sie erwägen, ein RTOS für ein zukünftiges Projekt zu verwenden, lesen Sie den folgenden Artikel: Wann benötige ich ein Real-Time-System?

Hintergrundwissen: Wie sich Real-Time-Betriebssysteme von allgemeinen Betriebssystemen unterscheiden

Betriebssysteme wie Microsoft Windows und Mac OS bieten eine hervorragende Plattform für die Entwicklung und Ausführung Ihrer nicht kritischen Mess- und Regelanwendungen. Diese Betriebssysteme sind jedoch für andere Anwendungsfälle als Real-Time-Betriebssysteme konzipiert und stellen nicht die ideale Plattform für die Ausführung von Anwendungen dar, die ein präzises Timing oder eine längere Verfügbarkeit erfordern. In diesem Abschnitt werden einige der wichtigsten Unterschiede zwischen beiden Betriebssystemen beschrieben und Sie erfahren, was Sie bei der Programmierung einer Real-Time-Anwendung erwarten können. 

Festlegen von Prioritäten

Bei der Programmierung einer Anwendung ermöglichen die meisten Betriebssysteme (jeder Art) dem Programmierer, eine Priorität für die gesamte Anwendung und sogar für verschiedene Tasks innerhalb der Anwendung (Threads) festzulegen. Diese Prioritäten dienen als Signal an das Betriebssystem und bestimmen, welche Operationen für den Entwickler am wichtigsten sind. Ziel ist es, dass das Betriebssystem den Task mit der höheren Priorität ausführt, wenn zwei oder mehr Tasks gleichzeitig zur Ausführung bereit sind.

In der Praxis folgen allgemeine Betriebssysteme diesen programmierten Prioritäten nicht immer strikt. Da die allgemeinen Betriebssysteme optimiert sind, um eine Vielzahl von Anwendungen und Prozessen gleichzeitig auszuführen, stellen sie in der Regel sicher, dass alle Tasks zumindest eine gewisse Bearbeitungszeit erhalten. Daher kann es vorkommen, dass Tasks mit niedriger Priorität in einigen Fällen eine höhere Priorität eingeräumt wird als anderen Tasks mit höherer Priorität. Dies gewährleistet eine gewisse Laufzeit für jeden Task, bedeutet jedoch, dass nicht immer den Wünschen des Entwicklers gefolgt wird.

Im Gegensatz dazu folgen Real-Time-Betriebssysteme den Prioritäten des Programmierers wesentlich strikter. Bei den meisten Real-Time-Betriebssystemen werden, sobald ein Task mit hoher Priorität 100 % der Prozessorleistung erfordert, keine anderen Tasks mit niedrigerer Priorität ausgeführt, bis der Task mit hoher Priorität abgeschlossen ist. Daher müssen Entwickler von Real-Time-Systemen ihre Anwendungen sorgfältig mit den erforderlichen Prioritäten programmieren. In einer typischen Real-Time-Anwendung fügt ein Entwickler zeitkritischen Code (z. B. eine Ereignisantwort oder einen Steuercode) mit sehr hoher Priorität in einen Abschnitt ein. Ein anderer, weniger wichtiger Programmcode wie die Protokollierung auf einem Datenträger oder die Netzwerkkommunikation können in einem Abschnitt mit niedrigerer Priorität kombiniert werden.

Interrupt-Latenz

Die Interrupt-Latenz wird gemessen als die Zeitspanne zwischen der Erzeugung eines Interrupts und der Bereitstellung für das Gerät. Allgemeine Betriebssysteme können zwar unterschiedlich lang brauchen, um auf einen gegebenen Interrupt zu reagieren, aber Real-Time-Betriebssysteme müssen garantieren, dass alle Interrupts innerhalb einer bestimmten maximalen Zeit bereitgestellt werden. Das heißt, die Interrupt-Latenz von Real-Time-Betriebssystemen muss begrenzt sein. 

Leistung

Ein häufiges Missverständnis ist, dass Real-Time-Betriebssysteme eine bessere Leistung als allgemeine Betriebssysteme haben. Real-Time-Betriebssysteme können zwar in manchen Fällen aufgrund weniger gleichzeitig ausgeführter Tasks zwischen Anwendungen und Diensten eine bessere Leistung bieten, dies ist jedoch nicht grundsätzlich so. Die tatsächliche Leistung der Anwendung hängt von der CPU-Geschwindigkeit, der Speicherarchitektur, den Programmeigenschaften und vielem mehr ab. 

Real-Time-Betriebssysteme können zwar die Ausführungsgeschwindigkeit erhöhen, bieten aber möglicherweise wesentlich genauere und vorhersehbarere Timing-Merkmale als universelle Betriebssysteme.

Nächste Schritte

Lesen Sie das folgende Dokument, um zu erfahren, wie Sie mit NI-Hardware und -Software in kürzester Zeit ein überlegenes Real-Time-System erstellen können: