1. Grundlagen
a. Begriffsbestimmungen
Um das parallele Programmieren eingehend zu betrachten,
sind zuerst einige Begriffsbestimmungen notwendig.
Der Begriff Parallelität kann drei unterschiedliche Bedeutungen haben,
hierbei spielt die zugrunde liegende Hardware die entscheidende Rolle. So bezeichnet
man in der Hardwareebene mit Parallelität die Ausführung eines Prozesses
auf mehreren, in demselben System (z.B. Multiprozessorsysteme) vorhandenen Prozessoren.
Auch kann Parallelität aufgefasst werden als Ausführung eines parallelen
Programms auf einem verteilten System. Ein verteiltes System kann beispielsweise
ein Cluster sein, auf dem die Ausführung von Programmen auf mehrere einzelne
Rechner übertragen wird.
Auf die beiden vorstehenden Definitionen soll aber im Laufe dieser Arbeit nicht
weiter eingegangen werden, hier wird als Basis für die Ausführung
von Programmcode eine Ein-Prozessor-Maschine angenommen. Bei diesem Typ von
Computer definiert man Parallelität als pseudo-gleichzeitigen Ablauf, d.h.
der Prozessor wechselt in schnellen Abständen zwischen den anstehenden
Prozessen hin und her. Diese Umschaltung wird auch Multiplexing genannt. Hier
wird Parallelität als Nebenläufigkeit bezeichnet. Bei einem „Schnappschuss“
des Gesamtsystems befinden sich mehrere Prozesse gleichzeitig in Ausführung,
d.h. zwischen Start- und Endpunkt.