4.3 ERIKA
241
Bearbeite_Instanz();
Ende_der_Instanz();
}
}
Dieses Schema ist gekennzeichnet durch eine Endlosschleife, die eine Instanz der periodischen Task enthält, die mit einer blockierenden Operation Ende_der_Instanz()
endet. Diese blockiert die Task bis zur nächsten Aktivierung. Wenn ein solches Programmierschema zum Einsatz kommt (bei OSEK/VDX extended task genannt), ist
diese Task ständig, auch in Wartezeiten, auf dem Stapel präsent. In diesem Fall kann
der Stapel nicht geteilt werden und es muss ein eigener Stapel-Bereich für jede Task
reserviert werden.
Der OSEK/VDX-Standard sieht außerdem basic tasks vor. Diese sind periodische
Tasks, die ähnlich zu Funktionen nach dem folgenden Schema implementiert werden:
int Lokaae_Variabbe;
task(x) {
Bearbeite_Instanz();
}
System_Initiaaisieren() {
Initiaaisierung();
...
}
Im Vergleich zu extended tasks wird in basic tasks der persistente Zustand, der
zwischen zwei Ausführungen erhalten bleiben muss, nicht auf dem Stapel, sondern
in globalen Variablen gespeichert. Der Initialisierungsteil wird in die Systeminitialisierung verschoben, da Tasks nicht dynamisch erzeugt werden, sondern schon zum
Start des Systems existieren. Schließlich wird keine Synchronisierungsoperation benötigt, um die Task bis zu ihrer folgenden Periode zu blockieren, da die Task jedes
Mal aktiviert wird, wenn eine neue Instanz startet. Die Task selbst kann auch keine
blockierende Operation aufrufen, daher kann sie entweder von höher priorisierten
Tasks verdrängt werden oder bis zu ihrem Ende ablaufen. So verhält sich die Task
wie eine Funktion, die einen Bereich auf dem Stapel (engl. stack frame) alloziert,
abläuft und dann den Bereich wieder freigibt. Daher belegt die Task keinen Stapelspeicher zwischen zwei Ausführungen und der Stapel kann von allen Tasks des
Systems zusammen benutzt werden. ERIKA Enterprise unterstützt Stack Sharing
für alle basic tasks des Systems, damit für diesen Anwendungsfall die Menge an
benötigtem RAM-Speicher reduziert werden kann.
Im Bereich der Taskverwaltung bieten OSEK/VDX-Kerne Unterstützung für
Scheduling mit festen Prioritäten mit Immediate Priority Ceiling Protocol (deutsch
unverzügliches Prioritäts-Obergrenzen-Protokoll), um Prioritätsumkehr-Probleme
zu vermeiden. Die Verwendung des Immediate Priority Ceiling-Protokolls wird unterstützt, indem der Ressourcenverbrauch jeder Task in der OIL-Konfigurationsdatei
angegeben wird. Basierend auf dieser Angabe berechnet der OIL-Compiler den
maximalen Ressourcenverbrauch für jede Task.
Précédent

- 261/485

Suivant