Nebenläufigkeit

Nebenläufigkeit

Nebenläufigkeit (engl. concurrency) liegt vor, wenn mehrere Ereignisse in keiner kausalen Beziehung zueinander stehen, sich also nicht beeinflussen. Ereignisse sind nebenläufig, wenn keines eine Ursache des anderen ist. Oder anders ausgedrückt: Aktionen können nebenläufig ausgeführt werden (sie sind parallelisierbar), wenn keine das Resultat der anderen benötigt. Eine Modellierungssprache, die diese Abhängigkeiten sehr gut wiedergibt, sind Petri-Netze.

Inhaltsverzeichnis

Kausalordnung

Beispiel von nebenläufigen Aktionen

Die Nebenläufigkeit beschreibt einen relativistischen Begriff der Gleichzeitigkeit, der im Kausalitätsprinzip begründet ist (siehe Relativität der Gleichzeitigkeit und Happened-Before). Man kann sich das anhand eines Minkowski-Diagramms verdeutlichen: Ein Ereignis ist nebenläufig zu einem anderen, wenn es im Anderswo des anderen Ereignisses liegt. Das heißt, das eine Ereignis befindet sich weder in der Zukunft, noch in der Vergangenheit des anderen bzw. keines der Ereignisse ist Ursache oder Wirkung des anderen. Die drei Relationen „ist Ursache von“, „ist Wirkung von“ und „ist nebenläufig zu“ definiert die Kausalordnung, eine Halbordnung, die zu einer Sequenzialisierung der Ereignisse benutzt werden kann.

Dies macht man sich zum Beispiel in der Netzwerktechnik zu Nutze, da hier die Kausalordnung nur durch die Übermittlung von Nachrichten definiert ist: zur Sequenzialisierung von verteilten Prozessen werden hier Logische Uhren eingesetzt, die den relativistischen Zeitbegriff spiegeln.

Planung

Beispiel zur kausalen Abhängigkeit

Man kann das Konzept der Nebenläufigkeit nicht nur auf die Betrachtung von Ereignissen anwenden, sondern auch zur Planung von Aktionen. Dabei wird festgelegt, welche Aktion eine Voraussetzung einer anderen ist. Die Nebenläufigkeit ist dann so definiert, dass zwei Aktionen nebenläufig sind, wenn keine von ihnen Voraussetzung der anderen ist. Auf Grund der sich daraus ergebenden Halbordnung lassen sich dann Abläufe planen, optimieren und gegebenenfalls parallelisieren. Als Beispiel (nicht das gleiche wie in der Abbildung!) hier ein kleines Programm in Pseudocode (mit Zeilennummern):

Z1    a= 2;
Z2    b= 3;
 
Z3    p= a + b;
Z4    q= a * b;
 
Z5    r= q - p;

Die (kausalen) Abhängigkeiten ergeben sich dadurch, welches Kommando das Ergebnis eines anderen benötigt. Insbesondere sind die folgenden Zeilenpaare (potenziell) nebenläufig, weil nicht eine von dem Ergebnis der anderen abhängt: Z1 || Z2, Z3 || Z4 und Z5. Auf einem Massiv-Parallelen Computer könnten diese Befehle jeweils parallel ausgeführt werden. Einige moderne CPUs sind sogar in der Lage, solche Situationen zu erkennen und einzelne Befehle gleichzeitig in verschiedenen Teilen desselben Prozessors auszuführen (siehe Pipeline).

Siehe auch

Literatur

  • Peter Ziesche: Nebenläufige & verteilte Programmierung. W3L, 2004, ISBN 3937137041
  • Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann: Pattern-orientierte Softwarearchitektur, Muster für nebenläufige und vernetzte Objekte. dpunkt 2002, ISBN 3-89864-142-2

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Nebenläufigkeit — Nichtsequentialität; Gleichzeitigkeit * * * Nebenläufigkeit   [engl. concurrency], die Eigenschaft, dass zwei gleichzeitig laufende Prozesse unabhängig voneinander abgearbeitet werden können. Dabei ist es gleichgültig, ob die Prozesse in einer… …   Universal-Lexikon

  • Nebenläufige Programmierung — Nebenläufigkeit liegt vor, wenn mehrere Ereignisse in keiner kausalen Beziehung zueinander stehen, sich also nicht beeinflussen. Ereignisse sind nebenläufig, wenn keines eine Ursache des anderen ist. Oder anders ausgedrückt: Aktionen können… …   Deutsch Wikipedia

  • Parallelisierbarkeit — Nebenläufigkeit liegt vor, wenn mehrere Ereignisse in keiner kausalen Beziehung zueinander stehen, sich also nicht beeinflussen. Ereignisse sind nebenläufig, wenn keines eine Ursache des anderen ist. Oder anders ausgedrückt: Aktionen können… …   Deutsch Wikipedia

  • Nichtsequentialität — Nebenläufigkeit; Gleichzeitigkeit …   Universal-Lexikon

  • Datenflussarchitektur — Eine Datenfluss Architektur ist eine alternative Rechnerarchitektur zur sog. von Neumann Architektur, nach der die allermeisten heute gängigen Rechner implementiert sind. Ein nach der Datenfluss Architektur implementierter Rechner heißt… …   Deutsch Wikipedia

  • Datenflussgraph — Eine Datenfluss Architektur ist eine alternative Rechnerarchitektur zur sog. von Neumann Architektur, nach der die allermeisten heute gängigen Rechner implementiert sind. Ein nach der Datenfluss Architektur implementierter Rechner heißt… …   Deutsch Wikipedia

  • Datenflussrechner — Eine Datenfluss Architektur ist eine alternative Rechnerarchitektur zur sog. von Neumann Architektur, nach der die allermeisten heute gängigen Rechner implementiert sind. Ein nach der Datenfluss Architektur implementierter Rechner heißt… …   Deutsch Wikipedia

  • Datenfluss-Architektur — Eine Datenfluss Architektur ist eine alternative Rechnerarchitektur zur sogenannten von Neumann Architektur, nach der die allermeisten heute gängigen Rechner implementiert sind. Ein nach der Datenfluss Architektur implementierter Rechner heißt… …   Deutsch Wikipedia

  • Nichtsequentielle Programmierung — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Parallele Programmierung ist ein Programmierparadigma. Damit ist… …   Deutsch Wikipedia

  • Nichtsequenzielle Programmierung — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Parallele Programmierung ist ein Programmierparadigma. Damit ist… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”