Nebenläufigkeit
Parallele oder quasi-parallele Ausführung von Befehlsfolgen in Prozessen und Threads
Verdrängung jederzeit durch das Betriebssystem möglich ohne Einfluss des Anwendungsprogrammierers
Atomare Aktionen
Codebereiche, die in einem Stück, also atomar, ausgeführt werden müssen, um Inkonsistenzen zu vermeiden
Aber: Eine Unterbrechung durch Verdrängung ist jederzeit möglich
Konflikte durch Nebenläufigkeit
Anker ist Start der Liste
Problem hier:
Zwei Prozesse wollen einer Liste was hinzufügen, wenn das nicht nacheinander passiert, hängt ein Element in der “Luft” und die Prozesse haben verschiedene “Verständnisse” von dem Beginn der Liste
CPU Preemption
Kontextwechsel von Prozessen
Race Conditions
Kritische Abschnitte und gegenseitiger Ausschluss
-> Muss in beiden Prozessen festgelegt werden
Anforderungen an kritische Abschnitte
-> Ein kritischer Abschnitt (oder kritischer Bereich) ist ein Teil eines Programms, in dem auf gemeinsam genutzte Ressourcen (wie Variablen, Datenstrukturen, Dateien oder Hardware) zugegriffen wird, die nicht gleichzeitig von mehreren Threads oder Prozessen bearbeitet werden dürfen. Der kritische Abschnitt ist also der Codeblock, in dem potenziell widersprüchliche oder konfliktträchtige Operationen auf eine gemeinsame Ressource durchgeführt werden.
Spinlocks zum Sperren
-> Lock meint hier kritischen Abschnitt
Sperren durch Hardwareunterstützung
-> Atomare Instruktionsfolge sind Maschinenbefehle, die sicherstellen, dass atomare Aktionen ausgeführt werdem können
Semaphore
-> Jeder kritische Abschnitt hat eine Semaphor, bei Java gibt es
Mutex
Erzeuger-Verbraucher-Probleme
-> Beispiel Netzwerk:
Computer braucht länger zum Verarbeiten, sodass Router oder Switch mit dem Versenden von Daten wartet (Flusskontrolle)
Monitore
Deadlock
Deadlock Behandlung
Last changeda month ago