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.

2.2 Ansätze zur dynamischen Modifikation von Anwendungen<br />

<strong>in</strong>terpretiert<br />

alles tauschen<br />

nur Änderungen<br />

pos. unabh. (PIC)<br />

vorab-gebunden<br />

dyn. gebunden<br />

ger<strong>in</strong>ge Infrastruktur am Knoten - - + - 0 + - -<br />

ger<strong>in</strong>ge Übertragungsmenge ++ - - + + + -<br />

ger<strong>in</strong>ger Aufwand am Knoten + + - 0 + -<br />

Flexibilität der Modulverwendung + 0 - + - +<br />

ger<strong>in</strong>ge Mehrkosten zur Laufzeit - - + + 0 + +<br />

fe<strong>in</strong>e Granularität + - - 0 + + +<br />

Tabelle 2.1: Vergleich der Verfahren zum Codeupdate<br />

Daten übertragen werden. Nur bei der Übertragung von speziellem <strong>in</strong>terpretierten Code können unter<br />

Umständen noch bessere Werte erreicht werden. Beim dynamischen B<strong>in</strong>den ist zu beachten, dass neben<br />

dem Code zusätzlich Symbol- und Relokations<strong>in</strong>formationen am Knoten benötigt werden.<br />

Der Aufwand, um die Änderung auf dem Knoten e<strong>in</strong>zuspielen, ist besonders ger<strong>in</strong>g, wenn der Code<br />

schon von e<strong>in</strong>em externen Rechner vorbereitet wurde. In diesem Fall müssen weder Tabellen angepasst,<br />

noch Code gebunden werden.<br />

Bei der Flexibilität wird betrachtet, wie gut man die Methode für die Veränderung mehrerer Knoten<br />

e<strong>in</strong>setzen kann. Enthält der übertragene Code ke<strong>in</strong>en Bezug zur aktuellen Speicherbelegung, so kann er<br />

für verschiedene Knoten verwendet werden, ansonsten kann das Programm nur für genau e<strong>in</strong>en Knoten<br />

angewandt werden.<br />

Beim Aufwand zur Laufzeit sticht besonders die Interpretation hervor, da der Code analysiert und<br />

umgesetzt werden muss. Alle anderen Verfahren haben kaum oder ke<strong>in</strong>en zusätzlichen Mehraufwand<br />

zur Laufzeit.<br />

In der Granularität der Veränderung ist der Hauptunterschied, ob man den gesamten Speicher<br />

betrachtet oder e<strong>in</strong>zelne Programmteile verändern kann.<br />

2.2.5 Zustandsanpassung<br />

Die bisher vorgestellten Techniken beschäftigen sich hauptsächlich mit dem Verändern von Code. Der<br />

Laufzeitzustand wurde dabei kaum beachtet. Bei den meisten beispielhaft angesprochenen Systemen<br />

bleibt der Zustand bei e<strong>in</strong>er Veränderung auch nicht erhalten. Das System wird nach der Veränderung<br />

neu gestartet, um ungültige Zeiger zu elim<strong>in</strong>ieren. Lediglich Contiki [DGV04] bietet die Möglichkeit<br />

an, dass die alte Version e<strong>in</strong>es Programmmoduls se<strong>in</strong>en Zustand sichert, sodass er von der neuen<br />

Version verwendet werden kann. Die Anpassung des Zustands bleibt der Anwendung überlassen.<br />

Will man ungültige Referenzen vermeiden, müssen entweder genügend Informationen zur Verfügung<br />

stehen, um alle Referenzen zu kennen oder man führt e<strong>in</strong>e Indirektionsstufe e<strong>in</strong>. Wie bereits vom positionsunabhängigen<br />

Code bekannt, werden dann Aufrufe beispielsweise über e<strong>in</strong>e Tabelle durchgeführt,<br />

die e<strong>in</strong>en Bezeichner auf e<strong>in</strong>e Adresse abbildet [BHA + 05]. Die Anpassung anderer Werte des Zustands<br />

kann im Allgeme<strong>in</strong>en nicht automatisch erfolgen, da die Bedeutung der e<strong>in</strong>zelnen Elemente unbekannt<br />

ist. Unterstützung kann das System nur bei der Erstellung von Sicherungspunkten bieten.<br />

15

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!