14.01.2015 Aufrufe

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4.4 Verweise auf Module<br />

Abbildung 4.12: Verändern e<strong>in</strong>er aktiven Funktion<br />

Um e<strong>in</strong>e dynamische Änderungsoperation durchzuführen, wird die aktuell ausgeführte Funktion unterbrochen. Ist<br />

nun genau die unterbrochene Funktion Gegenstand der Änderung, so kann nicht gewährleistet werden, dass die<br />

Rücksprungadresse noch s<strong>in</strong>nvoll ist. Das Fortfahren an der gespeicherten Rücksprungadresse kann zum Absturz oder<br />

anderen unvorhersehbaren Folgen führen.<br />

Im Detail ist es systemabhängig, ob und wie viele aktive Funktionen es geben kann. In re<strong>in</strong>en<br />

ereignisgesteuerten Systemen, wie beispielsweise T<strong>in</strong>yOS [HSW + 00], die nur e<strong>in</strong>en Aktivitätsträger<br />

anbieten, können ke<strong>in</strong>e quasi-parallelen Kontrollflüsse entstehen. Nur e<strong>in</strong>e Ereignisbearbeitung kann<br />

den normalen Kontrollfluss unterbrechen. Reiht man Änderungsoperationen hier als normale Aufgaben<br />

e<strong>in</strong> (siehe Abschnitt 4.5.7.2), so werden sie ausgeführt, wenn ke<strong>in</strong>e andere Aufgabe aktiv ist. Somit<br />

ist nur die Nebenläufigkeit der Ereignisbearbeitung zu berücksichtigen. Bietet das System h<strong>in</strong>gegen<br />

e<strong>in</strong> Threadkonzept an, das die Unterbrechung der Aktivitätsträger erlaubt, so gibt es mehrere aktive<br />

Funktionen, die man identifizieren muss, um festzustellen, ob sie von der Änderungsoperation betroffen<br />

s<strong>in</strong>d.<br />

Zur Identifikation der aktiven Funktionen muss der Verwalter überprüfen, an welcher Stelle die<br />

Ausführung auf dem verwalteten Gerät durch die Änderungsoperation unterbrochen wurde. Anhand der<br />

Position kann die entsprechende Funktion bestimmt werden. Unterstützt das System mehrere Aktivitätsträger,<br />

so muss der Verwalter die aktuellen Ausführungspositionen von allen Threads überprüfen und<br />

erhält so die Menge der aktiven Funktionen. Da die Verweise auf e<strong>in</strong>e aktive Funktion nicht verändert<br />

werden können, liefert die Abhängigkeitsprüfung e<strong>in</strong>en entsprechenden Fehlercode zurück, falls die<br />

Abhängigkeiten von e<strong>in</strong>er der aktiven Funktionen bestimmt werden sollen.<br />

Lösungsansatz: auf Beendigung warten<br />

Um e<strong>in</strong>e solche Situation aufzulösen, bietet die Basisschicht e<strong>in</strong>en e<strong>in</strong>fachen Ansatz an. Der Grundgedanke<br />

ist, dass e<strong>in</strong>e aktive Funktion nur e<strong>in</strong>e begrenzte Zeit lange aktiv ist und man nur e<strong>in</strong>e kurze<br />

Zeit warten muss, bis die Funktion nicht mehr aktiv ist. Das verwaltete System wird daher fortgesetzt,<br />

um nach e<strong>in</strong>em kurzen Moment erneut zu prüfen, ob e<strong>in</strong> günstigerer Systemzustand vorliegt. Die<br />

Wahrsche<strong>in</strong>lichkeit, dass beim zweiten Versuch ke<strong>in</strong>e aktiven Funktionen betroffen s<strong>in</strong>d, hängt vom<br />

Aufbau der Software ab.<br />

In dem von uns hauptsächlich betrachteten Szenario werden Dienste der Laufzeitumgebung ausgetauscht<br />

oder verändert. Diese haben im Allgeme<strong>in</strong>en e<strong>in</strong>e kurze Laufzeit und e<strong>in</strong>e ger<strong>in</strong>ge Aufruffrequenz,<br />

sodass die Wahrsche<strong>in</strong>lichkeit hoch ist, dass die Funktion zu e<strong>in</strong>em späteren Zeitpunkt nicht<br />

mehr aktiv ist und die Operation fortgesetzt werden kann.<br />

Ist bei e<strong>in</strong>em erneuten Versuch die Funktion immer noch oder schon wieder aktiv, so kann man das<br />

Verfahren mehrmals wiederholen. Nach e<strong>in</strong>er bestimmten Zeit oder nach e<strong>in</strong>er festgelegten Anzahl von<br />

Versuchen macht e<strong>in</strong>e Wiederholung ke<strong>in</strong>en S<strong>in</strong>n mehr und die Abhängigkeitsprüfung schlägt endgültig<br />

fehl. Das System kann <strong>in</strong> diesem Fall die aktive Funktion und den Aktivitätsträger angeben, <strong>in</strong> dem sie<br />

69

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!