Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Nebenläufigkeit

Die Nebenläufigkeit, mitunter auch Parallelität (englisch concurrency) genannt, ist in der Informatik die Eigenschaft eines Systems, mehrere Aufgaben, …

Inhalt3 Abschnitte
  1. 1. Grundbegriff und Ausprägungen
  2. 2. Nebenläufigkeit und Parallelverarbeitung
  3. 3. Parallelisierbarkeit, Abhängigkeiten und Verfahren

Grundbegriff und Ausprägungen

Nebenläufigkeit, auch Parallelität oder englisch concurrency genannt, ist die Eigenschaft eines Systems, mehrere Aufgaben, Berechnungen, Anweisungen oder Befehle gleichzeitig auszuführen. Die Aufgaben können unabhängig voneinander sein oder gemeinsam eine Aufgabe bearbeiten. Dabei können sie miteinander interagieren, etwa um Zwischenergebnisse auszutauschen.

Nebenläufigkeit kann nur scheinbar gleichzeitig sein: Beim Multitasking führt ein einzelner Prozessor verschiedene Aufgaben abwechselnd aus. Echt nebenläufige Ausführung findet dagegen beispielsweise auf einem Mehrkernprozessor oder in einem Rechnerverbund aus mehreren getrennten, über ein Netzwerk verbundenen Computern statt. Die Grenze zum Parallelrechner im eigentlichen Sinne ist bei echter Parallelität fließend. Zur Beschreibung und Analyse nebenläufiger Prozesse dienen unter anderem Parallel Random Access Machines, Message Passing und Petri-Netze. Das Philosophenproblem ist ein Fallbeispiel aus der Theoretischen Informatik.

Nebenläufigkeit und Parallelverarbeitung

In einer engeren Begriffsauffassung wird zwischen nebenläufiger Behandlung (concurrency) und Parallelverarbeitung (parallelism) unterschieden. Nebenläufigkeit ist dabei vor allem ein Konzept zur Abbildung realer Vorgänge. Sie ist auch sinnvoll, wenn nur ein einziger CPU-Kern zur Verfügung steht. Parallelverarbeitung bezeichnet in diesem Verständnis dagegen vor allem die echt gleichzeitige Berechnung auf mehreren Kernen, meist zur Bearbeitung eines Problems.

Parallelisierbarkeit, Abhängigkeiten und Verfahren

Parallelisierbarkeit beschreibt, ob zwei oder mehr Abschnitte, Iterationen oder Ereignisse nebenläufig ausgeführt werden können, ohne ein anderes Ergebnis zu erzeugen. Aktionen können nebenläufig ausgeführt werden, wenn keine das Resultat der anderen benötigt. Programmabschnitte dürfen daher nicht kausal voneinander abhängen. Mehrere Transaktionen, Prozesse oder Threads sind genau dann parallelisierbar, wenn ihre parallele, verzahnte oder umgekehrte Ausführung zum selben Resultat führt wie die sequentielle Ausführung.

Sind Ablaufschritte so voneinander abhängig, dass sie in einer festen Reihenfolge nacheinander ausgeführt werden müssen, sind sie nicht parallelisierbar. Teilweise abhängige Programmabschnitte müssen bezüglich dieser Abhängigkeiten synchronisiert werden; dadurch entsteht eine Sequentialisierung. Umgekehrt sind Abläufe nicht serialisierbar, wenn sie echt gleichzeitig stattfinden müssen und sich nicht nacheinander ausführen lassen.

Viele praxisrelevante Probleme besitzen eine natürliche Parallelität, wenn ihr Lösungsverfahren direkt in einen parallelen Algorithmus umgesetzt werden kann. Genannte Verfahren zur Parallelisierung sind die Binärbaummethode, list ranking, pointer doubling, parallel prefix, symmetry breaking und Gebietszerlegung (domain decomposition).

Ein modernes Anwendungsbeispiel ist die Distributed-Ledger-Technologie. Klassische Blockchains ordnen Transaktionen häufig sequentiell in einer Total Order. Neuere Ansätze wie das Cerberus-Protokoll verwenden dagegen partiell geordnete Graphen. Transaktionen, die unterschiedliche Objekte beziehungsweise Assets betreffen, sind nicht kausal voneinander abhängig und können deshalb echt nebenläufig verarbeitet werden. Theoretisch ist dadurch eine lineare Skalierbarkeit möglich.

Lernvideos zu Nebenläufigkeit

Weiterlesen

Philosophenproblem Beim Philosophenproblem (englisch dining philosophers problem) handelt es sich um ein Fallbeispiel aus dem Bereich der theoretischen Informatik. Informatik Als einfache Rechengeräte leisteten Abakus und später der Rechenschieber unschätzbare Dienste. 1641 konstruierte Blaise Pascal eine mechanische … Anweisung (Programmierung) Anweisungen sind üblicherweise Zuweisungen, Kontrollanweisungen (wie Sprünge, Schleifen und bedingte Anweisungen) und Prozeduraufrufe. Abhängig von der … Maschinensprache Mit einem Assembler: Assemblersprachen formulieren die Prozessorbefehle des Maschinencodes als Mnemonics in einer einfachen Syntax. Dieser Quelltext wird … Multitasking Der Begriff Multitasking [ˌmʌltiˈtɑːskɪŋ] (engl.) bzw. Mehrprozessbetrieb bezeichnet die Fähigkeit eines Betriebssystems, mehrere Aufgaben (Tasks) … Prozessor Aufbau und Funktionale Einheiten · Hauptprozessor (CPU) und Mehrprozessorkerne · Steuer- bzw. Leitwerk · Rechenwerk und Register · Datenleitungen · Caches und MMU. Mehrkernprozessor Multi-Threaded-CPUs sind mehrfädige (engl. multithreading) Prozessorkerne mit mehreren Programmzählern und Registersätzen, die sich gegenüber dem System aber … Rechnernetz Ein Rechnernetz, Computernetz oder Computernetzwerk ist ein Zusammenschluss verschiedener technischer, primär selbstständiger elektronischer Systeme … Computer Ein Computer (englisch; deutsche Aussprache [kɔmˈpjuːtɐ]) oder Rechner ist ein Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet. Parallelrechner Pipelining. Bearbeiten. Problemstellungen, bei denen größere Datenmengen in mehreren aufeinander folgenden Schritten verarbeitet werden, sogenanntes Pipelining. Parallele Programmierung Es umfasst zum einen Methoden, ein Computerprogramm in einzelne Teilstücke aufzuteilen, die nebenläufig ausgeführt werden können, zum anderen Methoden, … Paralleler Algorithmus Umgekehrt sind auch viele bekannte sequentielle Algorithmen parallelisierbar, so z. B. einige bekannte Sortieralgorithmen wie Bubblesort oder Quicksort. Es …