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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

5 Kontroll- und Verwaltungsschicht<br />

5.4.4.4 Dispatcher<br />

Der Dispatcher ist für die tatsächliche Umschaltung zwischen verschiedenen Aktivitätsträgern zuständig.<br />

Se<strong>in</strong>e Aufgabe ist das Wiederherstellen e<strong>in</strong>es Threadkontexts und gegebenenfalls das Sichern des<br />

aktuellen Threadzustands. Diese Aufgabe ist stark architekturabhängig, da hier Register<strong>in</strong>halte gesichert<br />

und restauriert werden müssen.<br />

Abbildung 5.11: Abhängigkeiten des Dispatchers<br />

Vor der E<strong>in</strong>lastung von Threads muss erst bestimmt werden, welcher Thread aktiviert werden soll.<br />

Daher wird der Dispatcher nur vom Scheduler aufgerufen, wenn dieser e<strong>in</strong>e Umschaltung auf e<strong>in</strong>en<br />

anderen Aktivitätsträger entscheidet.<br />

Ist nur e<strong>in</strong> Thread im System und wird zur Behandlung von Unterbrechungen ke<strong>in</strong> manueller<br />

Kontextwechsel benötigt, so kann auf e<strong>in</strong>en Dispatcher verzichtet werden. Falls e<strong>in</strong> Dispatcher benötigt<br />

wird, muss er jedoch lokal vorhanden se<strong>in</strong>. Die Auslagerung ist nicht möglich, da zur E<strong>in</strong>lastung<br />

e<strong>in</strong>es Threads lokale, hardwarespezifische Operationen notwendig s<strong>in</strong>d, die nicht entfernt durchgeführt<br />

werden können.<br />

Für e<strong>in</strong>ige Prozessoren können jedoch verschiedene Varianten e<strong>in</strong>es Dispatchers angeboten werden,<br />

welche beispielsweise e<strong>in</strong>ige Spezialregister nur unter bestimmten Bed<strong>in</strong>gungen sichern. So müssen die<br />

Register der Fließkommae<strong>in</strong>heit bei e<strong>in</strong>em Kontextwechsel nicht gesichert werden, wenn ke<strong>in</strong>e Thread<br />

Fließkommaoperationen durchführt. Sobald sich das jedoch ändert, muss der Dispatcher ausgetauscht<br />

werden.<br />

5.4.5 Koord<strong>in</strong>ierungsmechanismen<br />

Zur Koord<strong>in</strong>ierung nebenläufiger Vorgänge <strong>in</strong> e<strong>in</strong>er Anwendung steht <strong>in</strong> Java e<strong>in</strong> Monitor Konzept<br />

[Han72] zur Verfügung, welches <strong>in</strong> Form e<strong>in</strong>es synchronized Blocks um e<strong>in</strong>en kritischen<br />

Abschnitt angewandt werden kann. Neben dem Schutz e<strong>in</strong>es kritischen Abschnitts bietet<br />

das Monitor Konzept auch die Möglichkeit e<strong>in</strong>er Benachrichtigung mittels Object.wait() und<br />

Object.notify(), um aktives Warten vermeiden zu können.<br />

Zur Unterstützung dieser Koord<strong>in</strong>ierungsdirektiven muss die virtuelle Masch<strong>in</strong>e entsprechende<br />

Mechanismen anbieten. Neben e<strong>in</strong>er Schlossvariablen, die angibt, ob der Monitor gerade besetzt ist,<br />

wird für jeden gesperrten Monitor e<strong>in</strong>e Warteschlange benötigt, <strong>in</strong> die Threads e<strong>in</strong>gereiht werden,<br />

die darauf warten, den Monitor betreten zu können. Gibt e<strong>in</strong> Thread, bei der Blockierung an e<strong>in</strong>em<br />

Monitor, die CPU auf, so wird der Zustand mithilfe der Threadsteuerung entsprechend geändert.<br />

Bei Reaktivierung e<strong>in</strong>es Threads sieht die Java-Spezifikation ke<strong>in</strong>e spezielle Abstimmung mit der<br />

E<strong>in</strong>planungsstrategie von Threads vor; es wird ausdrücklich betont, dass e<strong>in</strong> zufälliger Thread aktiviert<br />

wird [LY99].<br />

Abbildung 5.12: Abhängigkeiten der Koord<strong>in</strong>ierungsmechanismen<br />

116

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!