Forschung > Projekte > SEMPEX

Sicheres Mehrprozessor-Echtzeitbetriebssystem für eingebettete Anwendungen (SEMPEX)

Beteiligte an der Hochschule

  • Dipl.-Ing. Robert Kaiser
  • Prof. Dr. Reinhold Kröger

Kooperationspartner

  • SYSGO AG, Klein-Winternheim

Laufzeit

Beginn: September 2005
Ende: Oktober 2007

Finanzierung

  • 65% SYSGO AG
  • 35% bmwa im Rahmen der Initiative AiF Pro Inno II

Veröffentlichungen

  • R. Kaiser: "Scheduling Virtual Machines in Real-time Embedded Systems", OSPERT 2006 Workshop on Operating Systems for Embedded Real-Time applications, Seite 7-15, Editors: S. Brandt, Juli 2006 (BibTeX)
  • R. Kaiser: "Koexistenz unterschiedlicher Zeitanforderungen in einem gemeinsamen Rechensystem", Springer, Echtzeitsysteme im Alltag, Seite 16-25, Editors: P. Holleczek; B. Vogel-Heuser, ISBN: 978-3-540-47690-0, November 2006 (BibTeX)
  • Kaiser, Robert: "Multiprocessor Real-Time Scheduling in a Microkernel-Based System", Multicore Expo 2006, Munich, November 2006 (BibTeX)
  • Kaiser, Robert: "Virtualisation for Embedded Real-Time Systems", GI/ITG Fachgruppentreffen Betriebssysteme, Herbst 2006, München, Oktober 2006 (BibTeX)
  • R. Kaiser: "Combining Partitioning and Virtualisation for Safety-critical Systems", Embedded World Conference 2007, Nuremberg, Februar 2007 (BibTeX)

Kurzbeschreibung

Unter eingebetteten Systemen versteht man allgemein Rechensysteme, die so konstruiert und programmiert sind, dass sie als Gerät für eine bestimmte Aufgabe arbeiten. Diese Systeme sind heute allgegenwärtig: von Telekommunikationsgeräten über Consumer-Elektronik bis hin zu Steuerungen von Industrieanlagen finden sie sich praktisch in jedem Bereich des täglichen Lebens. Die Aufgaben, die diese Systeme zu erfüllen haben, werden immer komplexer. Zugleich erschließen sie sich immer mehr Bereiche, in denen Fehlfunktionen eine Gefahr für Leben und Gesundheit von Menschen oder das Risiko großer finanzieller Verluste mit sich bringen. Die Anforderungen an die Verlässlichkeit solcher Systeme sind deshalb sehr hoch, was Auswirkungen sowohl auf die in solchen Systemen eingesetzte Software als auch auf deren Hardware hat.
Softwareseitig waren frühere eingebettete Systeme eher einfach strukturiert und für den jeweils zu erfüllenden Zweck maßgeschneidert. Sie kamen vielfach mit einem sehr einfachen Betriebssystem, teilweise sogar ganz ohne ein solches, aus. Dagegen sind heutige Systeme deutlich komplexer. Sie beherbergen vielfach Programme von verschiedenen Zulieferern mit unterschiedlichen, sich teilweise sogar widersprechenden Anforderungen an ihre Laufzeitumgebung. So kommt es zum Beispiel häufig vor, dass Programme mit Echtzeitanforderungen und Nicht-Echtzeitprogramme in einem System koexistieren müssen. Diese Vielfalt an Programmen macht ein Betriebssystem als Kontrollinstanz erforderlich, das dafür sorgt, dass keine unerwarteten Wechselwirkungen zwischen den Programmen entstehen, und das Echtzeitprogrammen die erforderlichen Ressourcen rechtzeitig zur Verfügung stellt.
Hardwareseitig werden im Bereich der eingebetteten Systeme Eigenschaften wie Robustheit, geringer Energieverbrauch und kompakter Aufbau im Allgemeinen höher bewertet als reine Rechenleistung. Aus diesem Grund werden Mehrprozessor-Anordnungen nur in solchen Fällen gewählt, in denen bestimmte Aufgaben von dafür maßgeschneiderten Prozessoren zu erledigen sind. Systeme mit mehreren gleichartigen Prozessoren, wie sie etwa im Bereich der Server zur Performance-Steigerung eingesetzt werden, sind aufgrund des konstruktionsbedingten Mehrbedarfs an Energie und der geringeren Robustheit bisher nicht üblich. Dies dürfte sich durch den Trend zu Multi-Core-Prozessoren, die mehrere Prozessorkerne auch einem Chip miteinander vereinen, jedoch ändern. Deshalb müssen Betriebssysteme für eingebettete Anwendungen künftig auch Multi-Core-Prozessoren unterstützen.
Ziel des Projekts ist zunächst die Weiterentwicklung eines ursprünglich für Ein-Prozessor-Systeme konzipiertem Mikrokerns für den Einsatz auf Mehrprozessorsystemen. Dabei soll getreu dem Mikrokern-Prinzip vom Kern nur eine Abstraktionsschicht der zugrunde liegenden Hardware geschaffen werden, sodass die auf dem Kern ablaufenden Anwendungen die Kontrolle darüber erhalten, auf welchen Prozessoren die Programme jeweils zur Ausführung kommen.
Der so entstehende Multi-Core-Mikrokern dient als Evaluationsplattform für den zweiten Teil des Projekts. In diesem zweiten Teil geht es um die Entwicklung von Modellen und Methoden zur Ermittlung und Minimierung des Betriebssystem-Overhead:
Die Anforderung an ein Echtzeitprogramm besteht darin, dass es eine gegebene Berechnung innerhalb einer vorgegebenen Zeit ausführt, d.h. es benötigt zur Verrichtung seiner Tätigkeiten bestimmte Mengen an Rechenarbeit. Demgegenüber sichern Echtzeitbetriebssysteme ihren Programmen stets nur Rechenzeiten zu unter der Annahme, dass Rechenzeit und Rechenarbeit äquivalente Größen seien. Gerade diese Annahme trifft aber bei heutigen Rechnerarchitekturen aufgrund der darin integrierten Caches nicht mehr zu: Die Zeit, die für ein und dieselbe Berechnung benötigt wird, kann, je nach dem Zustand des Prozessors, erheblich (u.U. um mehrere Größenordnungen) variieren. Bisher blieben solche Effekte weitgehend unberücksichtigt. Ziel des zweiten Teils des Projekts ist es, diese Effekte besser zu quantifizieren. Idealerweise werden sich daraus Techniken entwickeln lassen, anhand derer das System die Cache-Effekte vorab schätzen kann und diese Schätzungen bei der Ausführungsplanung berücksichtigen kann. Dabei werden, je nach Klasse (Echtzeit/Nicht-Echtzeit) der betrachteten Programme unterschiedliche Strategien zum Tragen kommen.