Was versteht man unter einem Echtzeitbetriebssystem?

Überblick

In diesem Whitepaper erfahren Sie, was ein Echtzeitbetriebssystem ist, wie Sie es für Mess-, Steuer- und Regelanwendungen einsetzen, und inwiefern es sich von üblichen Betriebssystemen wie z. B. Windows unterscheidet.

Inhalt

Einführung zu Echtzeitbetriebssystemen

Die folgenden Abschnitte behandeln die Grundlagen und Begrifflichkeiten von Echtzeitbetriebssystemen. Nach der Lektüre dieses Dokuments empfiehlt sich das Whitepaper Building a Real-Time System with NI Hardware and Software, in dem Sie mehr darüber erfahren, wie mit Hard- und Software von National Instruments anspruchsvolle Echtzeitsysteme zügig erstellt werden können.

 

Was ist ein Echtzeitbetriebssystem?

In der Regel übernimmt ein Betriebssystem die Verwaltung der Hardware-Ressourcen eines Computers und fungiert als Host für die Anwendungen, die auf dem Computer ausgeführt werden. Genau diese Aufgaben werden auch von einem Echtzeitbetriebssystem übernommen, doch kann dieses darüber hinaus Anwendungen ausführen, die hochpräzises Timing und ein hohes Maß an Zuverlässigkeit erfordern. Dies ist insbesondere in Mess- und Automatisierungssystemen bedeutsam, da hier Ausfallzeiten kostspielig sind und eine verzögerte Programmausführung ein Sicherheitsrisiko darstellen kann.

Ein Betriebssystem ist ein Echtzeitbetriebssystem, wenn es zur Ausführung einer kritischen Operation über eine begrenzte Zeitspanne verfügt (oder zumindest überwiegend in der Lage ist, diese Zeitspanne einzuhalten). Zu diesen Operationen zählen beispielsweise Betriebssystemaufrufe und Interrupt-Handling. Betriebssysteme, die eine maximale Zeitspanne zur Ausführung dieser Operationen definitiv garantieren können, werden häufig auch als „harte“ Echtzeitsysteme bezeichnet, während jene, die dies nur im Großteil der Fälle können, als „weiche“ Echtzeitsysteme bezeichnet werden. In der Praxis haben diese Kategorien nur einen beschränkten Nutzen, denn jede Lösung mit Echtzeitbetriebssystem verfügt über besondere Leistungscharakteristiken, die Anwender genau prüfen sollten.

Zur Verdeutlichung der beschriebenen Konzepte folgendes Beispiel: Stellen Sie sich vor, dass Sie für ein neues Fahrzeugmodell ein Airbag-System entwickeln. Schon ein kleiner Fehler beim Timing (der den Airbag zu früh oder zu spät auslöst) kann hier schwere Folgen haben und bei Insassen zu Verletzungen führen. Daher wird ein hartes Echtzeitsystem benötigt; denn als Systemdesigner müssen Sie dafür Sorge tragen, dass jede Operation die Timing-Beschränkungen einhält. Geht es hingegen um den Entwurf eines Mobiltelefons, das für den Empfang von Videostreaming ausgelegt sein soll, ist der Verlust kleiner Datenmengen gelegentlich vertretbar, da es im Wesentlichen darauf ankommt, den Videostream aufrechtzuerhalten. Für eine solche Anwendung ist ein weiches Echtzeitbetriebssystem womöglich ausreichend.

Entscheidend ist, dass es ein Echtzeitbetriebssystem bei korrekter Programmierung ermöglicht, ein Programm mit äußerst konsistentem Timing auszuführen. Echtzeitbetriebssysteme bieten Programmierern dabei ein hohes Maß an Kontrolle darüber, wie Tasks priorisiert werden, und können gewöhnlich Gewissheit darüber geben, dass wichtige Abläufe eingehalten werden.

Bei den am häufigsten auf PCs eingesetzten Betriebssystemen (wie z. B. Windows) handelt es sich um allgemeine Betriebssysteme, nicht etwa um Echtzeitbetriebssysteme. Ausführlichere technische Informationen zu den Unterschieden zwischen Echtzeit- und allgemeinen Betriebssystemen sind weiter unten aufgeführt. Beide Arten von Systemen haben gewisse Vor- und Nachteile. Betriebssysteme wie Windows ermöglichen die Nutzerflexibilität durch viele Programme und Serviceleistungen (und sorgen so für „Fairness“), wohingegen Echtzeitbetriebssysteme in der Lage sind, kritische Anwendungen zuverlässig und mit präzisem Timing (den Prioritäten des Programmierers entsprechend) auszuführen.

 

Wichtige Begriffe und Grundlagen

Determinismus: Eine Anwendung (oder deren kritischer Teil), die auf einem harten Echtzeitbetriebssystem ausgeführt wird, wird als deterministisch bezeichnet, wenn ihr Timing innerhalb einer bestimmten Fehlertoleranz sichergestellt werden kann.

Hartes vs. weiches Echtzeitsystem: Ein Betriebssystem, das eine maximale Zeitspanne zur Ausführung von Operationen definitiv garantieren kann, wird als hartes Echtzeitsystem bezeichnet. Im Gegensatz dazu wird ein Betriebssystem, das Operationen nur bedingt in einer bestimmten Zeit ausführen kann, als weiches Echtzeitsystem bezeichnet.

Jitter: Der Fehler im Timing eines Tasks über aufeinanderfolgende Iterationen eines Programms oder einer Schleife hinweg wird als Jitter bezeichnet. Echtzeitbetriebssysteme sind dafür optimiert, bei korrekter Programmierung nur geringen Jitter zuzulassen. Ein Task benötigt bei jedem seiner Aufrufe ungefähr die gleiche Zeit zur Ausführung.

Abb. 1: Jitter ist ein Maß dafür, inwieweit die Ausführungszeit eines Tasks über aufeinanderfolgende Iterationen hinweg Schwankungen aufweist. Echtzeitbetriebssysteme sind dafür ausgelegt, Jitter zu minimieren.

 

Beispiele für Echtzeitanwendungen

Echtzeitbetriebssysteme wurden im Wesentlichen für zwei Arten von Anwendungen konzipiert: für Programme zur Reaktion auf Ereignisse und für Echtzeitregelsysteme. Anwendungen zur Reaktion auf Ereignisse, wie automatisierte visuelle Prüfsysteme bei Teilen auf einem Fließband, erfordern die Reaktion auf einen Stimulus innerhalb eines festgelegten Zeitrahmens. Beispielsweise muss in diesem visuellen Prüfsystem jedes Teil fotografiert und analysiert werden, bevor sich das Fließband bewegt.

Entwickler einer Anwendung zur Reaktion auf Ereignisse sollten diese für die Ausführung auf einem harten Echtzeitbetriebssystem programmieren, um sicherzustellen, dass eine Antwort deterministisch (innerhalb eines vorgegebenen Zeitrahmens) erfolgt. Wird bei einer solchen Bauteileprüfung ein allgemeines Betriebssystem eingesetzt, könnte dies dazu führen, dass ein Teil nicht innerhalb des vorgegebenen Zeitrahmens geprüft wird. In der Folge treten unnötige Verzögerungen am Fließband ein, was zwangsläufig die Entsorgung des Teils oder den Versand eines potenziell fehlerbehafteten Teils zur Folge hat.

Regelsysteme hingegen wie beispielsweise ein Tempomat in Kraftfahrzeugen verarbeiten fortwährend Rückmeldungen, um eine oder mehrere Ausgangsgrößen anzupassen. Da jede Ausgangsgröße davon abhängt, dass die Eingangsgröße innerhalb einer festgelegten Zeitspanne verarbeitet wird, ist es äußerst wichtig, dass die Verarbeitungszeiten der Schleife eingehalten werden, sodass die Ausgangsgrößen korrekt ausgegeben werden. Wenn ein Tempomat die Drosseleinstellung zu einem vorgegebenen Zeitpunkt nicht bestimmen könnte, wäre das fatal. Harte Echtzeitbetriebssysteme können sicherstellen, dass die Eingangsgrößen des Regelsystems in einem fixen Zeitrahmen (auf Grundlage des denkbar ungünstigsten Falls) verarbeitet werden.

Zudem können viele Anwendungen, die über einen längeren Zeitraum ausgeführt werden, von der Zuverlässigkeit eines Echtzeitbetriebssystems profitieren. Da Echtzeitbetriebssysteme statt vieler Anwendungen und Prozesse nur eine begrenzte Zahl von Softwareprogrammen gleichzeitig ausführen, sind sie hervorragend für Systeme geeignet, die Dauerbetrieb erfordern, oder bei denen Ausfallzeiten nicht hinnehmbar oder kostspielig sind.

Falls Sie für ein neues Projekt den Einsatz eines Echtzeitbetriebssystems in Betracht ziehen, finden Sie hier nützliche Informationen.

 

Unterschiede zwischen Echtzeit- und allgemeinen Betriebssystemen

Betriebssysteme wie Microsoft Windows und Mac OS bieten eine erstklassige Plattform für die Entwicklung und Ausführung nichtkritischer Mess-, Steuer- und Regelanwendungen. Diese Betriebssysteme sind jedoch für andere Anwendungsfälle entwickelt worden als Echtzeitbetriebssysteme und nicht für die Ausführung von Anwendungen optimiert, die präzises Timing oder ausgedehnte Betriebszeiten erfordern. In diesem Abschnitt werden einige bedeutende Unterschiede zwischen beiden Arten von Betriebssystemen dargestellt. Zudem wird erläutert, was bei der Programmierung einer Echtzeitanwendung zu beachten ist.

Prioritätsvergabe

Bei der Programmierung einer Anwendung haben Entwickler bei den meisten Betriebssystemen (gleich welcher Art) die Möglichkeit, eine Priorität für die gesamte Anwendung und sogar für verschiedene Tasks innerhalb der Anwendung (Threads) anzugeben. Diese Prioritäten dienen als Signal an das Betriebssystem und geben vor, welche Operationen laut Ansicht des Entwicklers am wichtigsten sind. Sollten nämlich zwei oder mehr Tasks gleichzeitig zur Ausführung bereitstehen, führt das Betriebssystem den Task mit der höheren Priorität aus.

In der Praxis folgen allgemeine Betriebssysteme nicht immer strikt diesen programmierten Prioritäten. Da allgemeine Betriebssysteme dafür ausgelegt sind, eine Vielzahl von Anwendungen und Prozessen gleichzeitig auszuführen, sorgen sie normalerweise dafür, dass alle Tasks zumindest etwas Verarbeitungszeit zugeteilt bekommen. Infolgedessen bekommen Tasks mit niedriger Priorität möglicherweise eine höhere Priorität zugewiesen als Tasks mit ursprünglich höherer Priorität. Damit steht zwar jedem Task eine gewisse Laufzeit zur Verfügung, die Wünsche der Entwickler werden jedoch nicht immer erfüllt.

Echtzeitbetriebssysteme hingegen folgen viel genauer den Prioritäten des Programmierers. Wenn ein Task mit hoher Priorität 100 Prozent der Prozessorleistung beansprucht, werden bei den meisten Echtzeitbetriebssystemen keine anderen Tasks mit niedriger Priorität ausgeführt, bis der Task mit hoher Priorität beendet ist. Deshalb müssen Entwickler von Echtzeitsystemen ihre Anwendungen sorgfältig mit den entsprechenden Prioritäten im Hinterkopf programmieren. Bei einer typischen Echtzeitanwendung platzieren Entwickler zeitkritischen Code (z. B. Code zur Reaktion auf Ereignisse, Steuer- und Regelcode) in einem Abschnitt mit sehr hoher Priorität. Sonstiger, weniger wichtiger Code wie z. B. Datenloggen auf die Festplatte oder Kommunikation über ein Netzwerk kann in einem Abschnitt mit niedrigerer Priorität kombiniert werden.

Interrupt-Latenzzeit

Die Interrupt-Latenzzeit wird als Zeitspanne angegeben zwischen dem Zeitpunkt, zu dem ein Gerät einen Interrupt erzeugt und dem, zu dem es bedient wird. Während bei allgemeinen Betriebssystemen die Zeitspanne bis zur Antwort auf einen gegebenen Interrupt variabel ist, müssen Echtzeitbetriebssysteme sicherstellen, dass alle Interrupts innerhalb eines bestimmten Zeitrahmens bedient werden. Anders ausgedrückt: Die Interrupt-Latenzzeit von Echtzeitbetriebssystemen muss fixiert werden.

Leistungsfähigkeit

Dass Echtzeitbetriebssysteme eine höhere Leistungsfähigkeit aufweisen als die üblichen Betriebssysteme, ist ein gängiger Irrtum. Echtzeitbetriebssysteme mögen zwar in manchen Fällen aufgrund von weniger Multitasking zwischen Anwendungen und Serviceleistungen eine höhere Leistungsfähigkeit bieten, jedoch ist dies keinesfalls die Regel. Die eigentliche Anwendungsleistung ist abhängig von der CPU-Geschwindigkeit, Speicherarchitektur, von Programmcharakteristiken u. v. m..

Echtzeitbetriebssysteme müssen zwar nicht zwangsläufig die Ausführungsgeschwindigkeit erhöhen, bieten jedoch deutlich präzisere und besser vorhersagbare Timing-Charakteristiken als allgemeine Betriebssysteme.


Nächste Schritte

Im Folgenden erfahren Sie, wie Sie Hard- und Software von NI zur zügigen Erstellung anspruchsvoller Echtzeitsysteme einsetzen.