Wie funktioniert Echtzeit unter Windows?

Für wen Echtzeit kein Fremdwort ist, weiß, wie wichtig diese heute für viele informationstechnische Bereiche ist. Ob bei parallel operierenden Servomotoren eines Roboterarms, präzisen Mess-Applikationen oder kameragestützten Fahrassistenzsystemen – die Reaktionszeit zwischen Hardware- und Software-Komponenten ist in vielen modernen Anwendungen ein kritischer Faktor. Was früher mit speziellen Echtzeitbetriebssystemen (Real-Time Operating System, kurz: RTOS) oder Hardware (DSP bzw. FPGA) erreicht wurde, lässt sich mittlerweile ebenso auch auf handelsüblichen Windows-PCs umsetzen. Windows ist jedoch kein Echtzeitsystem, da es laufenden Anwendungen häufig die Ressourcen entzieht, um andere Programme und Prozesse, etwa zur Systemwartung, auszuführen. Wie können diese vermeintlichen Gegensätze also zusammengebracht werden? Wie funktioniert Echtzeit unter Windows?

Echtzeit und Windows – die Lösung

Die einzige Voraussetzung für Echtzeit auf Windows-PCs ist ein Prozessor mit mindestens zwei Kernen. Die grundlegende Funktionsweise besteht darin, Windows anzuweisen, nur eine begrenzte Anzahl von CPU-Kernen eines Mehrkernprozessors zu benutzen. Auf den freien Kernen bootet daraufhin das Echtzeitsystem, welches fortan wie ein eigenständiges RTOS funktioniert, während Windows auf den übrigen CPU-Kernen seine volle Funktionalität behält. Windows und das Echtzeitsystem laufen ab diesem Zeitpunkt also gleichzeitig, parallel auf einem einzigen Rechner, ohne dass sie sich gegenseitig einschränken. Die Anweisung an Windows, auf weniger Kernen zu booten, kann relativ einfach mit dem Konfigurationsprogramm Msconfig vorgenommen werden. Eine Anleitung dazu finden sie hier: Setting up Dedicated CPUs.

Wie funktioniert Echtzeit: Booten auf getrennte Kerne

Durch diese Vorgehensweise erhält das Echtzeitsystem einen geschützten Bereich und garantiert somit, dass Windows-Prozesse nicht die Priorität über zeitkritische Operationen bekommen und sich negativ auf die Echtzeitleistung auswirken. Ziel ist es, speziell „harte“ Echtzeiteigenschaften auch auf Windows-PCs zu erreichen. Doch was bedeutet „hart“ in diesem Zusammenhang?

Was ist der Unterschied zwischen„weicher“ und „harter“ Echtzeit?

Bei Echtzeit unterscheidet man zwischen unterschiedlichen Anforderungen und wie mit dem Zeitrahmen zur Ausführung von Operationen umgegangen wird. Während „weiche“ Echtzeit lediglich einen ungefähren Mittelwert an Reaktionszeiten anstrebt, wird bei der „harten“ Echtzeit garantiert, dass eine vorgeschriebene Zeitspanne nicht überschritten wird. Durch den erhöhten Anspruch ist das Erreichen von „harten“ Echtzeiteigenschaften damit wesentlich komplexer und aufwendiger. Jedoch ist dieses deterministische Zeitverhalten vor allem in automatisierten industriellen Bereichen, speziell bei Mess-, Steuer- und Regelungsanwendungen, unabdingbar.

Wie können Windows- und Echtzeit-Kontext nun aber zusammengebracht werden?

Das Echtzeitsystem ist als ein Gerätetreiber implementiert und stellt ein eigenes API bereit, mit dem der Anwender die zeitkritischen Code-Teile seiner Windows-Applikation in eine DLL auslagert. Diese DLL wird dann in den Echtzeitkontext des RTOS geladen. Damit Windows und DLL aus ihren unterschiedlichen Kontexten miteinander kommunizieren, kann – neben indirekten Mitteln wie Pipes oder Sockets – ein geteilter Speicherbereich erstellt werden, auf den beide Zugriff haben. Trotz der Verwendung eines Echtzeitbetriebssystems bleibt Windows dabei als Programmieroberfläche und Host-System zur Ausführung erhalten.

Wie funktioniert Echtzeit: Auslagerung der zeitkritischen Codebestandteile in eine DLLWie funktioniert Echtzeit: Gemeinsam genutzter Speicherbereich

Warum gerade Windows als RTOS?

Gegenüber sowohl reinen Echtzeitbetriebssystemen als auch Echtzeit-Hardwarelösungen bietet ein Windows-PC spezifische Vorteile. So ist Windows eine vertraute Grafik- und Benutzeroberfläche mit breiter, stetig aktualisierter Treiberunterstützung sowie einem großen Spektrum an lauffähigen Programmen. Reine RTOS hingegen sind stark spezialisiert und dadurch oft eingeschränkt, was Funktionsumfang und Bedienbarkeit angeht. Hardware-Lösungen wie FPGAs oder DSPs können zwar je nach Anforderung angepasst werden, deren Programmierung ist jedoch auch komplex und zeitaufwändig. Um „harte“ Echtzeit auch unter Windows umsetzen zu können, benötigt man lediglich einen Dual-Core-PC.

Zusammenfassung

Windows eignet sich sehr gut für industrielle Anwendungen durch:

  • weitverbreitete, intuitive und vertraute Benutzeroberfläche
  • Zugriff auf neueste Kommunikationsschnittstellen
  • leistungsfähige Entwicklerwerkzeuge
  • niedrige Einarbeitungs- und Trainingskosten
  • Langlebigkeit durch hohen Marktanteil und ständige Weiterentwicklung

Die bei Windows fehlende Echtzeitfähigkeit wird durch Echtzeitsysteme wie Kithara RealTime Suite ergänzt und ermöglicht erst die Ausführung zeitkritischer Anwendungen durch:

  • deterministisches Verhalten dank hochfrequenter Echtzeit-Timer
  • extrem niedrige maximale Antwortzeiten
  • gewohnte Programmiersprache und Tools
  • leistungsfähige und einfach anwendbare Funktionen
  • schnelle Einarbeitung und somit kostengünstige Entwicklung
  • breite Unterstützung industrieller Protokolle und Standards

Windows und Echtzeit stellen keinen Widerspruch dar. Erst das nahtlose Zusammenspiel beider Welten ermöglicht optimale Lösungen und macht den Einsatz in industriellen Bereichen oft überhaupt erst möglich.

Möchten Sie sich selber ein Bild von Echtzeit unter Windows machen? Testen Sie einfach die kostenfreie Demoversion von Kithara RealTime Suite mit vollem Funktionsumfang und zahlreichen Beispielen, die Ihnen den Einstieg erleichtern.