Echtzeitbetriebssysteme auf Multicore

In den frühen Tagen der Embedded-Software hatten Bausteine in der Regel eine spezielle Funktion, und jedes Ereignis, das asynchron eintrat, wurde von einem Interrupt erfasst. Dadurch war die Programmierung des Systems relativ unkompliziert, obwohl die Software in den Maschinenbefehlen des jeweiligen Prozessors geschrieben wurde. Auch auf moderneren Multifunktionsbausteinen lassen sich Echtzeitbetriebssysteme problemlos einsetzen, doch Mehrkernprozessoren stellen eine große Herausforderung dar.

In den frühen Tagen der Embedded-Software hatten Bausteine in der Regel eine spezielle Funktion, und jedes Ereignis, das asynchron eintrat, wurde von einem Interrupt erfasst. Dadurch war die Programmierung des Systems relativ unkompliziert, obwohl die Software in den Maschinenbefehlen des jeweiligen Prozessors geschrieben wurde. Auch auf moderneren Multifunktionsbausteinen lassen sich Echtzeitbetriebssysteme problemlos einsetzen, doch Mehrkernprozessoren stellen eine große Herausforderung dar.

Robert Day

Die heutigen eingebetteten Systeme sind wahrhaftig multifunktional, und viele entsprechende Funktionen und Geräte werden auf einem einzigen Hardwareteil zusammengefasst. Das bedeutet, dass die eingebettete Software einen großen Teil der Komplexität, Zeiteinteilung, Ereignisverarbeitung und Sicherheit bereitstellen muss. Bisher setzten Softwareentwickler Echtzeitbetriebssysteme (RTOS) für Multifunktionsbausteine ein. Nun aber, da die Anwendungstypen, die auf einem Einzelsystem laufen, immer ungleichartiger werden, und mit der Einführung von Mehrkernprozessoren wird die Bewältigung aller Softwareanforderungen zu einer großen Herausforderung für ein einzelnes RTOS.

Für solch komplexe Systeme gibt es eine Lösung, und eigentlich ist es eine Kombination von Techniken, die bestimmt, wie die Entwicklung eingebetteter Software in vorhersehbarer Zukunft aussehen wird: ein Separation-Kernel und ein Embedded-Hypervisor. Der Separation-Kernel ist eine moderne Version eines Echtzeitbetriebssystems, das fähig ist, Zeit und Speicher für die verschiedenen im System laufenden Softwareanwendungen sicher und zuverlässig zu partitionieren. Die Anwendungen laufen in ihren eigenen virtuellen Maschinen, die voreinander durch den Separation-Kernel und die Speicherverwaltungseinheit des Prozessors geschützt sind. Wenn eine Anwendung hinsichtlich Zeit oder Raum hinterher hinkt, laufen die anderen Anwendungen korrekt weiter, und der Betrieb des Systems wird nicht beeinträchtigt. Partitionierte Betriebssysteme kommen bereits seit einiger Zeit in sicherheitskritischen Systemen etwa in der Luftfahrtelektronik zum Einsatz, der Separation-Kernel fügt jedoch zwei neue Komponenten hinzu: Sicherheit und Multiprozessor-Unterstützung.