Beim Philosophenproblem (engl. Dining Philosophers Problem) handelt es sich um ein Fallbeispiel aus dem Bereich der Theoretischen Informatik.

Die Nebenläufigkeit, mitunter auch Parallelität (englisch concurrency) genannt, ist in der Informatik die Eigenschaft eines Systems, mehrere Aufgaben, Berechnungen, Anweisungen oder Befehle gleichzeitig ausführen zu können. Es kann sich dabei um völlig unabhängige Anweisungen handeln, bis hin zur gemeinsamen Bearbeitung einer Aufgabe. Sie können dabei auch miteinander interagieren (z. B. um Zwischenergebnisse auszutauschen).

Die Operationen können dabei nur scheinbar nebenläufig (parallel), beispielsweise im sogenannten Multitasking, auf einem Prozessor ausgeführt werden oder auch echt nebenläufig, beispielsweise auf einem Mehrkernprozessor oder auf einem Rechnerverbund bestehend aus mehreren getrennten und über ein Netzwerk verbundenen Computern. Die Grenze zum Parallelrechner im eigentlichen Sinne ist bei den Ansätzen zur echten Parallelität fließend.

Nebenläufige Prozesse können u. a. durch Parallel Random Access Machines, Message passing oder Petri-Netze beschrieben und analysiert werden.

Engere Begriffsauffassung

Bearbeiten

Mitunter wird auch exakter unterschieden zwischen „nebenläufiger Behandlung“ (englisch concurrency) und „Parallelverarbeitung“ (englisch parallelism): Die nebenläufige Behandlung wird dann vor allem als ein Konzept verstanden, reale Vorgänge abzubilden, das auch sinnvoll ist, wenn zur Ausführung nur ein einziger CPU-Kern zur Verfügung steht; im Gegensatz dazu fokussiert in diesem Begriffsverständnis die Parallelverarbeitung auf echt-gleichzeitige Mehrkern-Berechnung meist eines Problems.[1]

Parallelisierbarkeit und Serialisierbarkeit

Bearbeiten

Sind Ablaufschritte so voneinander abhängig, dass sie in einer festen Reihenfolge nacheinander ausgeführt werden müssen, sodass es nicht möglich ist, sie nebenläufig auszuführen, dann sind sie nicht parallelisierbar. Müssen Abläufe echt-gleichzeitig stattfinden, so dass es absolut keine Möglichkeit gibt, sie nacheinander auszuführen, so sind sie nicht serialisierbar.

Die Parallelisierbarkeit zweier oder mehrerer Abschnitte oder Iterationen eines Ablaufs oder von Ereignissen ist die Beurteilung, ob diese nebenläufig ausgeführt/berechnet werden können, ohne zu einem abweichenden Resultat zu führen.

„Aktionen können nebenläufig ausgeführt werden, wenn keine das Resultat des anderen benötigt.“

Wolfgang Schröder-Preikschat: Vortrag „Systemprogrammierung: Prozesssynchronisation: Nichtsequentialität“[2]

Die Programmabschnitte dürfen also nicht kausal voneinander abhängen. Anders ausgedrückt sind mehrere Transaktionen oder Prozesse/Threads genau dann parallelisierbar, wenn die parallele, verzahnte oder in umgekehrter Reihenfolge stattfindende Ausführung zum selben Resultat führt wie das sequentielle Ausführen.

Sind die Programmabschnitte (teilweise) voneinander abhängig, so müssen sie bezüglich dieser Abhängigkeiten synchronisiert werden, was eine Sequentialisierung (bzgl. dieser Abhängigkeit) bewirkt.

„Viele praxisrelevante Probleme besitzen Lösungsverfahren, die direkt in einen parallelen Algorithmus umgesetzt werden können. Man sagt in diesem Fall, daß das Problem eine natürliche Parallelität besitzt.“

B. Monien, J. Schulze, S. Grothklags: „Parallele Algorithmen“[3]

Verfahren zur Parallelisierung sind[4]

  • Binärbaummethode,
  • list ranking,
  • pointer doubling,
  • parallel prefix,
  • symmetry breaking,
  • Gebietszerlegung (engl. domain decomposition).

Ein modernes Anwendungsbeispiel für Parallelisierbarkeit findet sich in der Distributed-Ledger-Technologie. Während klassische Blockchains Transaktionen oft sequentiell ordnen ("Total Order"), nutzen neuere Ansätze wie das Cerberus-Protokoll partiell geordnete Graphen. Da Transaktionen, die unterschiedliche Objekte ("Assets") betreffen, nicht kausal voneinander abhängen, können diese echt-nebenläufig verarbeitet werden, was theoretisch eine lineare Skalierbarkeit ermöglicht.[5]

Siehe auch

Bearbeiten

Literatur

Bearbeiten
  • Peter Ziesche: Nebenläufige & verteilte Programmierung. W3L, 2004, ISBN 3-937137-04-1.
  • 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.

Einzelnachweise

Bearbeiten
  1. Rob Pike: 'Concurrency Is Not Parallelism', Youtube, 15. Oktober 2023.
  2. Wolfgang Schröder-Preikschat: Systemprogrammierung, Prozesssynchronisation: Nichtsequentialität. (PDF) In: Lehrstuhl Informatik 4. Friedrich-Alexander-Universität Erlangen-Nürnberg, 6. November 2013, abgerufen am 28. Dezember 2025.
  3. B. Monien, J. Schulze, S. Grothklags: Parallele Algorithmen. (Skriptum) Uni Paderborn, 2001, abgerufen am 28. Dezember 2025 (mit umfangreichem Literaturverzeichnis).
  4. Spezialvorlesung „Parallele Algorithmen“. Uni Potsdam, Didaktik der Informatik, abgerufen am 28. Dezember 2025.
  5. Jelle Hellings, Daniel P. Hughes, Joshua Primero, Mohammad Sadoghi: Cerberus: Minimalistic Multi-shard Byzantine-resilient Transaction Processing. In: Proceedings of the VLDB Endowment. 10. August 2020, doi:10.48550/arXiv.2008.04450 (arxiv.org [PDF]).

📚 Artikel Terkait di Wikipedia

Iterative Closest Point Algorithm

Der Iterative Closest Point Algorithm (ICP) ist ein Algorithmus, der es ermöglicht, Punktwolken aneinander anzupassen. Für die Anwendung des Verfahrens

Pol der Unzugänglichkeit

Garcia-Castellanos, Umberto Lombardo: Poles of Inaccessibility: A Calculation Algorithm for the Remotest Places on Earth. In: Scottish Geographical Journal. Vol

Lidar

DVGW-Merkblatt G 501) verwendet. Airborne Laserscanning Iterative Closest Point Algorithm TOF-Kamera Claus Weitkamp: Lidar – range-resolved optical remote sensing

Heap (Datenstruktur)

Deklariert die Klasse für den Heap class MinHeap { int* elements_; // Pointer auf das Array für die Elemente des Heap int capacity_; // Maximale Größe

Punktwolke

2011 ist die freie Programmbibliothek der Point Cloud Library (PCL) verfügbar. Diese bietet zahlreiche Algorithmen zur Verarbeitung n-dimensionaler Punktwolken

Liste von Algorithmen

Dies ist eine Liste von Artikeln zu Algorithmen in der deutschsprachigen Wikipedia. Siehe auch unter Datenstruktur für eine Liste von Datenstrukturen

ICP

College Peshawar, siehe Islamia College University Iterative Closest Point Algorithm, Computeralgorithmus zur Einpassung von Punktmengen in ein Referenzmodell

Evolutionärer Algorithmus

Evolutionäre Algorithmen (EA) sind eine Klasse von stochastischen, metaheuristischen Optimierungsverfahren, deren Funktionsweise von der Evolution natürlicher