Echtzeitbetriebssystem
Ein Echtzeitbetriebssystem (englisch real-time operating system, kurz RTOS genannt) ist ein Betriebssystem in der elektronischen Datenverarbeitung, das in der Lage ist, Echtzeit-Anforderungen der Anwendungen zu erfüllen.[1] Dies bedeutet, dass Anfragen eines Anwendungsprogramms oder das Eintreffen von Signalen über Hardware-Schnittstellen innerhalb einer im Voraus bestimmbaren Frist (Timeout ) gesichert verarbeitet werden. Entscheidend ist hier nicht die Länge der Frist, sondern dass es überhaupt eine Frist gibt, deren Einhaltung zugesichert werden kann.
Das Erfordernis eines Echtzeitbetriebssystems ergibt sich immer dann, wenn Rechner mit der physikalischen Welt messend und/oder steuernd in Verbindung stehen. Das ist das qualitative Erfordernis eines Echtzeitbetriebssystems.
Die quantitative Anforderung an dessen Echtzeitverhalten ergibt sich aus dem Anwendungsfall selbst. So sind zum Beispiel bei einer Heizungssteuerung längere -Werte anwendbar als bei der Auslösung eines Airbags. Zusammen mit dem vorher Gesagten ergibt sich, dass nicht jedes Echtzeitbetriebssystem für jede Echtzeitanwendung geeignet ist.
Theoretische Überlegungen
Da zur Definition keine bestimmten -Werte für die Betriebssystemaufrufe gefordert sind, sondern diese nur bestimmbar sein und festliegen müssen, ist theoretisch jedes Betriebssystem ein Echtzeitbetriebssystem, bei dem es eine obere Schranke für die Anzahl der Prozesse gibt und dessen Systemdienste ausschließlich aus LOOP-Programmen, also aus primitiv-rekursiven Funktionen bestehen. Die anwendbaren -Werte ließen sich dann errechnen. Allerdings sind die sich so ergebenden Werte für jede praktische Anwendung zu groß. Dies rechtfertigt den Begriff Echtzeitbetriebssystem als eigene Klasse von Betriebssystemen mit eigenen Anforderungen, bei dessen Erstellung die Echtzeit-Eigenschaft besonders berücksichtigt wird. Das sporadische und gemeinhin bekannte Verhalten von Desktop-Betriebssystemen für eine Weile "einzufrieren" ist für RTOS nicht hinnehmbar.
Anforderungen an Echtzeitbetriebssysteme
Präemptives Multitasking
Ein Echtzeitbetriebssystem, das über Multitasking verfügt, muss zwingend mit präemptivem Multitasking arbeiten, da bei kooperativem Multitasking einem Prozess durch einen zweiten bis zum Erreichen des Timeouts die CPU entzogen werden könnte. Mit dieser Anforderung einher geht auch das Erfordernis einer Interrupt-Infrastruktur der CPU.
Vorhersagbares Zeitverhalten der Systemaufrufe
Echtzeitbetriebssysteme müssen auch im ungünstigsten Fall die Einhaltung definierter Verarbeitungszeiten von Systemaufrufen garantieren. Dies betrifft vor allem das Scheduling und die Speicherverwaltung. Falls die Bearbeitung einer Anforderung zur Zuweisung von Speicher die Durchführung einer Garbage Collection provozieren kann, weil der Freispeicher erschöpft ist, dann verschlechtert sich das zusagbare Echtzeitverhalten dramatisch und mindestens auf die maximale Laufzeit einer Garbage Collection.
Vorhersagbare Reaktionszeiten auf Ereignisse
Unter Ereignis ist jede von außen her rührende Zustandsänderung gemeint, die für eine Echtzeitanwendung von Bedeutung ist. Das kann das Eintreffen eines Datenpaketes, das Sichändern eines Bits an einem Port und Ähnliches sein. In einer realen Anwendung kann sich dahinter die Verfügbarkeit neuer Messdaten, der Druck auf eine Taste oder das Überschreiten eines zulässigen Bereiches durch einen Messwert bedeuten. Ein Echtzeitbetriebssystem muss dann sicherstellen können, dass die hierzu erforderliche Reaktion, die zumeist in der Aktivierung einer zum Ereignis gehörenden Dienstroutine der Anwendung besteht, innerhalb einer im Voraus festliegenden Frist erfolgt.
Frühe Formen der Echtzeitverarbeitung
In frühen Echtzeitanwendungen wurde die garantierte Antwortzeit auf Ereignisse vor allem durch unmittelbare Nutzung von Hardware-Interrupts durch das Anwendungsprogramm selbst realisiert. Dazu senkt oder hebt (je nach Logik) der Anforderer das Potential auf einem IRQ genannten Pin der CPU. Die CPU stoppt dann sofort die Arbeit am aktuell ausgeführten Programm, legt den aktuellen Programmzähler auf den CPU-Stack, entnimmt einer Interrupt-Vektor-Tabelle die Adresse der zugehörigen Interrupt-Service-Routine und springt diese an. Gleichzeitig wird der Interrupt maskiert, sodass er nicht direkt wieder ausgelöst werden kann. Die Interrupt-Service-Routine behandelt dann das Ereignis, demaskiert den Interrupt und beendet sich dann über einen meistens RETI (Return from Interrupt) genannten Befehl. Die CPU springt dann zurück an die Programmstelle, an der sie die Programmabarbeitung unterbrochen hatte.
Die Nutzung von Hardware-Interrupts seitens der Anwendung selbst wird durch ein Echtzeitbetriebssystem entbehrlich.
Anwendungsbereiche
Echtzeitbetriebssysteme kommen immer dort zum Einsatz, wo das Überschreiten maximaler Antwortzeiten bei Antwort auf Ereignisse unmittelbare Schäden verursacht. Das sind insbesondere Maschinenbau, Steuerungstechnik und Robotik. Dort, speziell in Anwendungsbereichen, von denen Gefahr für Leib und Leben ausgeht, wie Medizintechnik und Fly-by-Wire, sind Echtzeitbetriebssysteme (beziehungsweise ein Echtzeitverhalten) unabdingbar.
Implementierungen
- ChibiOS
- ChorusOS
- DRYOS
- eCos
- embOS
- FreeRTOS
- iRMX
- LynxOS
- MicroC/OS-II
- Nucleus
- NuttX
- OS-9
- PEARL Operating System
- PikeOS
- QNX
- Real-Time Executive (RTE)
- RTEMS
- RIOT (Betriebssystem)
- Rodos (Betriebssystem)
- RSX-11
- RT-11
- RTAI
- RTLinux
- RTOS-32
- RTOS-UH
- RTX: Real Time eXtensions für Windows
- T-Engine
- Transaction Processing Facility
- TRON
- TTP-OS
- VxWorks
- Windows CE
- Zephyr (Betriebssystem)
Siehe auch
Einzelnachweise
- ITWissen:RTOS (real time operating system). 12. Juli 2015, abgerufen am 14. September 2018.
Weblinks
- Real Time Linux Foundation, Inc. Sammlung von verschiedenen Linux-Echtzeitbetriebssystemen (englisch)
- Eine Liste von kommerziellen Echtzeitbetriebssystemen (englisch)
- Englische Wikipedia Seite mit einer Tabelle von EZBSen
- Selbstoptimierendes Echtzeitbetriebssystem für verteilte selbstoptimierende Systeme. (PDF; 150 kB)