Cyclic Executive

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Cyclic Executive ist eine Alternative zu Echtzeitbetriebssystemen. Es ist eine Form des Kooperativen Multitasking, in der lediglich ein Task läuft. Der einzige Task ist typischerweise als Endlosschleife geschrieben, z. B. in der Programmiersprache C in der main-Methode.

Übersicht[Bearbeiten | Quelltext bearbeiten]

Periodische Prozesse sind wichtige Software-Komponenten in Echtzeit-Computersystemen. Ein periodischer Prozess besteht aus einer Aktion, zum Beispiel einer Berechnung, die wiederholt in einem periodisch auftretenden Muster ausgeführt wird.

Eine Cyclic Executive ist eine Kontrollstruktur oder ein Programm um explizit die Ausführung mehrerer periodische Prozesse auf einer einzigen CPU zu verschachteln. Die Verschachtelung erfolgt in einer deterministischen Weise, so dass die Ausführungszeit voraussehbar ist. Es kann als Umsetzungstechnik für eine Design-Methodik gesehen werden, bei dem ein Echtzeit-System hauptsächlich aus einer Sammlung periodischer Prozesse besteht. Die Prozessverschachtelung (en: process interleaving) wird nach einem "zyklischen Zeitplan" (en: cyclic schedule) definiert.[1]

Vorteile

  • Einfache Implementierung
  • Niedriger Aufwand
  • Gut planbar

Nachteile

  • Keine sporadischen Ereignisse behandelbar
  • Alles muss im Gleichschritt arbeiten
  • Code muss manuell geplant werden

Beispiel[Bearbeiten | Quelltext bearbeiten]

Das basic scheme zirkuliert dabei durch eine sich wiederholende Sequenze von Aufgaben, auf einer Frequenz. Als Beispiel dient hier ein Eingebettetes System, das einen Temperatursensor überwacht und ein LCD aktualisiert. Wenn das LCD zehnmal in der Sekunde (alle 100 Millisekunden) aktualisiert werden soll und der Temperatursensor aus anderem Grund alle 50 Millisekunden, könnte eine Schleife wie folgt konstruiert werden:

int main(void)
{
   // initialization code here

   while (1)
   {
      currTemp = tempRead();
      lcdWrite(currTemp);

      // waste CPU cycles until 50 ms
      currTemp = tempRead();
      // do other stuff

      // waste CPU cycles until 100 ms
   }
}

Der äußere 100-Millisekunden-Zyklus wird als major cycle definiert. In diesem Fall gibt es auch einen inneren minor cycle von 50 Millisekunden.

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. The Cyclic Executive Model and Ada (PDF; 1,3 MB)