Kommunikation und Parallele Prozesse - Cheatsheet
Prinzipien der Prozesskommunikation
Definition:
Grundsätze zur Interaktion zwischen Prozessen in parallelen und verteilten Systemen zur Synchronisation und zum Datenaustausch.
Details:
- Konzepte: Nachrichtenübermittlung, gemeinsame Speicher, Semaphoren
- Nachrichtenübermittlung: synchronous/asynchronous, blocking/non-blocking
- Middleware: CORBA, MPI, JMS
- Gemeinsamer Speicher: Shared Memory, Message-Passing
- Probleme: Deadlocks, Race Conditions
- Mechanismen zur Synchronisation: Mutex, Monitore, Barrieren
Parallelität und Concurrency
Definition:
Parallelität: Gleichzeitige Ausführung mehrerer Aufgaben. Concurrency: Strukturierung von Aufgaben, die scheinbar gleichzeitig ablaufen.
Details:
- Kontextwechsel (\textit{context switch}) bei Concurrency
- \textit{Thread}- und \textit{Prozess}-Parallelität
- Ressourcenkonflikte und Synchronisation
- Nutzt Mehrkernprozessoren effizient
- Wichtig für Systemleistung und -verfügbarkeit
Synchrone vs. Asynchrone Kommunikation
Definition:
Synchrone Kommunikation: Sender und Empfänger agieren gleichzeitig. Asynchrone Kommunikation: Sender und Empfänger agieren unabhängig voneinander.
Details:
- Synchrone Kommunikation: Synchronisation erforderlich.
- Asynchrone Kommunikation: Verwendung von Puffer oder Queues.
- Synchrone Operationsblockierung bis zur Bestätigung.
- Asynchrone Operationen erlauben parallele Ausführung.
- Beispiele: synchrone RPCs, asynchrone Message Queues.
Deadlock-Verhinderung und -Auflösung
Definition:
Techniken zur Vermeidung und Lösung von Deadlocks (Verklemmungen) in parallelen und verteilten Systemen.
Details:
- Deadlock: Zustand, in dem Prozesse gegenseitig auf Ressourcen warten, wodurch keine Fortschritte erzielt werden.
- Klauseln für Deadlock: Mutual Exclusion, Hold and Wait, No Preemption, Circular Wait.
- Vermeidung: Bankier-Algorithmus, Ressourcen-Hierarchie.
- Erkennung: Graph-basierte Methoden.
- Auflösung: Prozessabbruch, Ressourcenentzug.
Client-Server-Modelle
Definition:
Basismodell der Netzwerkkommunikation, bei dem der Client Anfragen an den Server stellt und der Server darauf antwortet.
Details:
- Client: Initiiert die Kommunikation, stellt Anfragen.
- Server: Antwortet auf Anfragen, bietet Dienste an.
- Verbindung: Meistens über TCP/IP.
- Zustandslosigkeit: HTTP-Anfragen sind zustandslos, jede Anfrage ist unabhängig.
- Latenz und Bandbreite: Entscheidende Faktoren für Leistungsfähigkeit.
- Schnittstellen: Standardisierte Protokolle wie HTTP, FTP.
- Beispielanwendungen: Webdienste, Datenbankanfragen.
Kritische Abschnitte und Semaphore
Definition:
Kritische Abschnitte bezeichnen Programmabschnitte, in denen auf gemeinsam genutzte Ressourcen zugegriffen wird. Semaphore sind Synchronisationsmechanismen zur Verwaltung des Zugriffs auf diese Ressourcen.
Details:
- Kritische Abschnitte: Bereiche, die nur von einem Prozess/Thread gleichzeitig betreten werden dürfen.
- Problem: Vermeidung von Race Conditions.
- Semaphore: Variablen zur Zählung von Ressourcen, initialisiert mit der Anzahl verfügbarer Ressourcen.
- Operationen:
wait(S)
(P-Operation) und signal(S)
(V-Operation). - Synchronisation:
wait(S)
dekrementiert, signal(S)
inkrementiert den Semaphorwert.
Shared Memory vs. Message Passing
Definition:
Vergleich von zwei parallelen Kommunikationsmethoden in parallelen Systemen: Gemeinsamer Speicher (Shared Memory) vs. Nachrichtenübermittlung (Message Passing).
Details:
- Shared Memory: Prozesse teilen sich einen gemeinsamen Adressraum.
- Vorteile: Schnellerer Zugriff (keine Kopieroperationen).
- Nachteile: Synchronisationsprobleme (Race Conditions, Deadlocks).
- Message Passing: Prozesse kommunizieren durch den Austausch von Nachrichten.
- Vorteile: Kein gemeinsamer Speicher, daher keine Synchronisationsprobleme.
- Nachteile: Höherer Kommunikationsaufwand (Kopieroperationen).
- Verwendung: Shared Memory oft in Multithreading, Message Passing oft in verteilten Systemen.
Fehlertoleranz und Wiederherstellung
Definition:
Techniken und Methoden zur Sicherstellung der Systemfunktionalität und Datenintegrität trotz Fehlern oder Ausfällen.
Details:
- Fehlertoleranz: Fähigkeit eines Systems, nach Fehlern weiterhin korrekt zu funktionieren.
- Wiederherstellung: Rückführung des Systems in einen konsistenten Zustand nach Fehlern.
- Redundanz: Einsatz mehrfach vorhandener Komponenten zur Kompensation von Fehlern.
- Checkpointing: Regelmäßiges Speichern des Systemzustands zur Minimierung von Datenverlust.
- Transaktionsprotokollierung: Aufzeichnung aller Änderungen zur nachträglichen Korrektur von Fehlern.
- Fehlerklassifikation: Unterscheidung von transienten, intermittierenden und permanenten Fehlern.
- Fehlertypen: Hardwarefehler, Softwarefehler, Netzwerkfehler.
- Rekonfigurationsmechanismen: Dynamische Anpassung des Systems zur Umgehung fehlerhafter Bereiche.