iX 3/2016
S. 116
Wissen
Embedded Computing
Aufmacherbild

Kurz erklärt: Echtzeit

Pünktlich

Viele Embedded-Systeme müssen in Echtzeit reagieren – zuverlässig innerhalb einer definierten Zeitspanne. Ein solch präzises Timing ist für Maschinen und medizinische Geräte unerlässlich.

Wer umgangssprachlich den Begriff Echtzeit verwendet, meint oft „simultan“ oder „unverzüglich“, also verzögerungsarm. Anders sieht das die Informationstechnik: Sie verlangt von einem Echtzeitsystem, dass es die Daten in einem zuvor definierten Zeitraum bearbeitet und Ergebnisse liefert, gleichgültig, wie lang dieser Zeitraum ist.

Entscheidend ist also die Zuverlässigkeit, nicht die Geschwindigkeit, wobei allerdings Embedded-Systeme oft Reaktionszeiten von Mikro- und Millisekunden fordern. Laufen auf einem System mehrere Tasks quasi parallel, muss das Betriebssystem beziehungsweise dessen Prozess-Scheduler die Pünktlichkeit bestimmter Tasks garantieren, also die für den Task gesetzte Deadline einhalten.

Ein dafür geeignetes Scheduling-Verfahren ist das zeitbasierte Earliest Deadline First (EDF). Es ordnet alle bereitstehenden Tasks aufsteigend nach ihren Fertigstellungsterminen; der mit der frühesten Deadline erhält die Rechenzeit. Stehen die Tasks allerdings in Abhängigkeit zueinander oder nutzen sie gemeinsame Ressourcen, können Deadlocks entstehen.

Mit EDF arbeitende Echtzeitsysteme verwenden ausschließlich das präemptive Multitasking. Anders als die kooperative Variante verlässt sich ein präemptiv arbeitender Scheduler nicht darauf, dass ein Task den Prozessor freiwillig wieder freigibt, sondern unterbricht den Prozess, legt ihn schlafen und übernimmt selbst wieder die Kontrolle. Gründe für das Unterbrechen können das Ablaufen der zugewiesenen Zeitscheibe oder die Ankunft eines neuen Tasks mit höherer Priorität sein.

Ein Scheduler kann die Prioritäten zum einen dazu verwenden, die Größe der Zeitscheibe oder die Häufigkeit der Rechenzeitzuweisung zu bestimmen. Zum anderen können sie dem Ordnen der Prozessreihenfolge dienen. Solche sortierenden Verfahren können die Prioritäten entweder dynamisch vergeben, indem sie sie mit jedem Timertick verringern, bis ein anderer Task eine höhere Priorität besitzt, oder statisch zuweisen. Zu letzterem Verfahren zählt das Deadline Monotonic Scheduling (DMS), das den Tasks entsprechend ihrer Deadline Prioritäten zuordnet.

Immer vom Schlimmsten ausgehen

Die minimale Reaktionszeit errechnet sich immer anhand des Worst Case, in dem alle verzögernden Faktoren einberechnet sind. Dazu zählen bei Annahme einer hohen Prozessorauslastung die Zahl der Takte, die der Prozessor zum Reagieren benötigt, die Umschaltzeit vom langsamsten zum eiligsten Task und alle durch das Betriebssystem entstehenden Verzögerungen. All das und die sich daraus ergebende garantierte Antwortzeit hängen stark von der Kombination aus Hard- und Software ab. Nichtdeterministische Verhaltensweisen wie Swapping, bestimmte Speicherzugriffe oder Hardwareinterrupts können dazu führen, dass sich das Worst-Case-Szenarium überhaupt nicht exakt berechnen lässt.

Üblicherweise unterscheidet man zwischen harter und weicher Echtzeit; hinzu gesellt sich der Begriff der festen Echtzeit. Systeme, die harte Echtzeit garantieren, überschreiten die Deadlines niemals. Tun sie es doch, haben sie versagt. Dagegen fasst man bei weicher Echtzeit die Reaktionszeit eher als statistische Größe oder als Richtlinie auf. Bei der festen Echtzeit gilt ein Überschreiten der Deadline innerhalb eines Toleranzbereichs nicht als Systemversagen, dennoch ist das Ergebnis nutzlos.

In weiteren Definitionen muss das System bei einer weichen Echtzeitanforderung bis zur Deadline lediglich reagieren, bei der harten muss das Ergebnis vollständig vorliegen. Andere wiederum unterscheiden harte und weiche Echtzeitsysteme dadurch, dass die Schwankungen (Jitter) in der Pünktlichkeit kleiner oder größer ausfallen.

Auf verschiedenen Wegen

Viele Echtzeitbetriebssysteme nutzen einen Mikrokernel, das heißt, sie erledigen dort nur die absolut notwendigen Grundfunktionen wie die Signalverwaltung, das Timer Handling, das Scheduling sowie die Speicherverwaltung. Alles andere befindet sich in ausgelagerten Modulen. Auf diese Weise arbeiten unter anderem PikeOS von Sysgo, Neutrino von QNX Symobi von Miray Software oder ThreadX von Express Logic.

Für Linux gibt es den Realtime Preemption Patch, der den Kernel um Full Realtime Preemption Support ergänzt. Bei der Frage, ob Linux nun harte oder nur weiche Echtzeit unterstützt, scheiden sich allerdings die Geister [1, 2].

Auf Echtzeitbetriebssysteme kommen immer mehr Aufgaben zu: Sie müssen nicht nur die Deadlines einhalten, sondern immer mehr unterschiedlich priorisierte Tasks auf verschiedene Prozessorkerne verteilen. Viele Produkte versprechen, dass sie das automatisch leisten. In sicherheitskritischen Bereichen müssen sie zusätzlich zertifiziert sein, zum Beispiel nach IEC 61508 für die funktionale Sicherheit oder für den mehrstufigen Automotive Safety Integrity Level (ASIL). (sun)