16.08.2013 Aufrufe

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

Objektorientierte Daten- und Zeitmodelle für die Echtzeit ...

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.

14 KAPITEL 1. EINFÜHRUNG<br />

Eine weitere Parallelisierungsebene ergibt sich aus der möglichen Nebenläufigkeit verschiedener,<br />

voneinander weitestgehend unabhängiger Teilaufgaben. Eine solche Aufgabenparallelität<br />

kann auf Operatorebene <strong>und</strong> auf Programmebene auftreten. In [Lüc00] werden auch hier<strong>für</strong><br />

Ansätze <strong>für</strong> <strong>die</strong> automatische, agentenbasierte Parallelisierung untersucht.<br />

Als dritte Möglichkeit <strong>für</strong> eine Parallelisierung kann das Pipelining-Konzept genutzt werden,<br />

das insbesondere <strong>für</strong> <strong>die</strong> Bildfolgenverarbeitung auf Spezialhardware eingesetzt wird. Jeder<br />

Prozessor ist dabei <strong>für</strong> eine bestimmte Teilaufgabe zuständig, wobei <strong>die</strong> verschiedenen Prozessoren<br />

auf unterschiedlichen, nacheinander aufgenommenen Bildern arbeiten. Konzepte <strong>für</strong><br />

eine automatische Programmierung von Bildauswertungsgeräte, <strong>die</strong> nach dem Pipelining-Prinzip<br />

arbeiten, werden in [Mel95] beschrieben.<br />

Selbstverständlich kann ein System auch gleichzeitig in mehreren <strong>die</strong>ser Ebenen parallelisiert<br />

werden. Für den Anwendungsentwickler sind vor allem <strong>die</strong> Ansätze interessant, <strong>die</strong> sich<br />

auf Standardhardware effizient umsetzen lassen, problemlos in der verwendeten Programmiersprache<br />

ausgedrückt werden können <strong>und</strong> <strong>die</strong> keinen oder nur wenig zusätzlichen Programmieraufwand<br />

erfordern. Das trifft insbesondere <strong>für</strong> <strong>die</strong> auf Operatorebene durchgeführte <strong>Daten</strong><strong>und</strong><br />

Aufgabenparallelisierung zu, wenn sie durch <strong>die</strong> verwendeten Bildverarbeitungsoperatoren<br />

gekapselt wird.<br />

Des weiteren läßt sich Aufgabenparallelität auch auf Programmebene nutzen, vorausgesetzt<br />

das Betriebssystem stellt entsprechende Mechanismen <strong>und</strong> Hilfsmittel bereit, <strong>und</strong> <strong>die</strong> einzelnen<br />

Aufgaben können als unabhängige Programmzweige implementiert werden. Die erste Forderung<br />

wird von allen modernen Betriebssystemen durch Prozesse, Threads <strong>und</strong> Semaphore<br />

unterstützt. Das Betriebssystem übernimmt dabei <strong>die</strong> Aufgabe, <strong>die</strong> einzelnen Zweige eines<br />

Programms auf <strong>die</strong> vorhandenen Prozessoren aufzuteilen. Ein großer Vorteil <strong>die</strong>ser Form der<br />

Parallelisierung ist, daß <strong>die</strong> geforderte Hardwareunabhängigkeit prinzipiell erhalten bleibt, da<br />

<strong>die</strong> Programmaufteilung unabhängig von den tatsächlich zur Verfügung stehenden Prozessoren<br />

ist. Stehen allerdings nur sehr wenige Prozessoren zur Verfügung führt eine zu starke Unterteilung<br />

in konkurrierende Programmzweige aufgr<strong>und</strong> des Overheads beim Prozeßwechsel zu<br />

Performanzverlusten.<br />

Die zweite gr<strong>und</strong>legende Voraussetzung <strong>für</strong> <strong>die</strong> Aufgabenparallelität ist <strong>die</strong> Aufteilung der<br />

Programme in entsprechend viele Bearbeitungszweige. Dies stellt im allgemeinen keine triviale<br />

Aufgabe dar <strong>und</strong> bedeutet einen zusätzlichen Aufwand, etwa <strong>für</strong> <strong>die</strong> Absicherung kritischer<br />

Bereiche oder das Verhindern von Verklemmungen. Darüber hinaus ist <strong>die</strong> Verwendung rein<br />

sequentieller, imperativer Programmiertechniken nur bedingt <strong>für</strong> <strong>die</strong> Implementierung nebenläufiger<br />

Teilaufgaben geeignet. Neben dem hohen Programmieraufwand bringt eine explizite<br />

Spezifikation den Nachteil mit sich, daß sie aufgr<strong>und</strong> des Overheads nur <strong>für</strong> eine bestimmte<br />

Hardwarekonfiguration optimal ausgelegt werden kann. Ändert sich <strong>die</strong>se, ist i.d.R. eine erneute<br />

Spezifikation notwendig.<br />

Funktionale Sprachen <strong>und</strong> <strong>Daten</strong>flußgraphen, sind aufgr<strong>und</strong> ihrer parallelen Struktur prinzipiell<br />

besser geeignet <strong>für</strong> <strong>die</strong> Darstellung paralleler Kontrollflüsse. Im Zusammenhang mit Bildverarbeitungssystemen<br />

wurden sie bisher jedoch in erster Linie als Gr<strong>und</strong>lage <strong>für</strong> graphische<br />

Programmierwerkzeuge [PL94, KR94, MG95] <strong>und</strong> zur graphischen Darstellung der Beziehungen<br />

zwischen <strong>Daten</strong> <strong>und</strong> Operatoren beim Programmentwurf [PH95, Mel95] untersucht. Ist<br />

<strong>die</strong> Anzahl der Operatoren nicht zu groß, bieten derartige Systeme einen guten Überblick über<br />

<strong>die</strong> Funktionen <strong>und</strong> bestehenden Abhängigkeiten eines Bildverarbeitungsmoduls. Graphische

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!