Da die Echtzeit-Erweiterung bisher nur x86-, ARM9- und PowerPC-Architekturen berücksichtigt, ist zu klären, ob der Linux- Kernel künftig auch die anderen 32- Bit-Archtekturen unterstützt. In der Automatisierung gibt es zudem viele µClinux- Plattformen (spezieller Linux-Kernel, der an Mikrocontroller ohne Memory Management Unit angepasst ist). Auch sie sollten nicht vom Mainline-Linux abgekoppelt werden.
Ein Nachteil von Linux im Zusammenhang mit Embedded Systemen ist der große Bedarf an Speicherressourcen, der sich durch die Arbeiten am RT-Preempt- Patch nicht verringert hat. Trotz aller Miniaturisierungs- und Integrationserfolge der Halbleiterhersteller im Bereich der 32- Bit-Controller wird es auf absehbare Zeit keine Single-Chip-Lösungen mit ausreichendem Speicherplatz geben, um ein Embedded-Linux direkt in den On-Chip- Speicher eines Mikrocontrollers zu integrieren. Linux-Lösungen brauchen immer einen teuren Single-Board-Computer. Deswegen wird es auch in Zukunft ein großes Angebot an kompakten Echtzeit- Betriebssystemen geben, die in den On- Board-Speicher eines Mikrocontrollers passen. sk
www.tenasys.com
https://www.rtai.org
www.sysgo.com
www.osadl.org
![]() | Klaus-Dieter Walter ist Geschäftsführer der SSV Software Systems GmbH in Hannover. |
Vollständige Kernel-Unterbrechbarkeit: Bisher konnte ein niedrig priorisierter Prozess durch den Aufruf einer nicht unterbrechbaren Linux-Kernel-Funktion einen höher priorisierten Prozess blockieren. Hätte dieser Prozess dann eine zeitkritische Funktion auszuführen, wären Probleme hinsichtlich eines nicht garantierbaren Zeitverhaltens zu erwarten. Der RT-Preempt-Patch hat die Anzahl nichtunterbrechbarer Kernel-Abschnitte und deren Dauer zwar signifikant verringert, dennoch bleibt ein Restrisiko bestehen.
Überarbeitetes Interrupt-System: Die Interrupt- Service-Routinen einer Linux-Konfiguration (Programm-Code zur Reaktion auf externe Ereignisse) weisen zum Teil sehr lange Laufzeiten auf. Bisher ließen sich solche Service-Routinen praktisch nicht oder nur unter ganz bestimmten Voraussetzungen unterbrechen. Durch den RT-Preempt-Patch wurde ein Interrupt- Threading realisiert, das zur eigentlichen Interrupt-Bearbeitung einen Kernel-Thread (Ausführungsstrang beziehungsweise eine Ausführungsreihenfolge der Abarbeitung eines Prozesses) startet. Dadurch bleibt die Interrupt-Service-Routine unterbrechbar. Die Folge ist ein verbessertes Reaktionsverhalten auf externe Ereignisse.
Prioritätskonzept: Die Prioritäten einzelner Prozesse spielen für die Zuteilung der CPU (Scheduling) eine wichtige Rolle. Bisher war in einem Linux-System eine Prioritätsumkehr (Priority Inversion) möglich – der Super-Gau für jede Echtzeit-Anwendung: Verschiedene System-Ressourcen, zum Beispiel Operationen bei der Speicherverwaltung, können nicht gleichzeitig von verschiedenen Prozessen ausgeführt werden und sind deswegen über so genannte Mutexe verriegelt (MUTual EXclusion: gegenseitiger Ausschluss). Belegt nun ein niedrig priorisierter Prozess eine solche Ressource, die ein höher priorisierter Prozess benötigt, ist dieser Prozess blockiert: seine Priorität invertiert. Die höhere Priorität wird dann für das Scheduling unbedeutend. Durch den RT-Preempt- Patch wurde Linux um ein so genanntes „Priority Inheritance“ erweitert. Dabei vererbt ein Prozess seine Priorität praktisch an eine System-Ressource, um eine Prioritätsumkehr zu verhindern. Zusätzlich wurde Realtime-Mutex eingeführt, das Zugriffe auf Kernel und Ressourcen serialisiert.
Mit dem RT-Preempt-Patch stehen in Linux nun auch High Resolution Timer zur Verfügung, die programmierbare Intervallzeiten von 1 ms, 4 ms und 10 ms ermöglichen. Darüber hinaus gibt es verschiedene Diagnose-Werkzeuge, die das Zeitverhalten einer Anwendung unter Linux mit RT-Preempt-Patch analysieren.