diff --git a/Writerside/images/image_84.png b/Writerside/images/image_84.png new file mode 100644 index 0000000..dc2edda Binary files /dev/null and b/Writerside/images/image_84.png differ diff --git a/Writerside/images/image_85.png b/Writerside/images/image_85.png new file mode 100644 index 0000000..9bc83cc Binary files /dev/null and b/Writerside/images/image_85.png differ diff --git a/Writerside/images/image_86.png b/Writerside/images/image_86.png new file mode 100644 index 0000000..1e4842a Binary files /dev/null and b/Writerside/images/image_86.png differ diff --git a/Writerside/topics/BS/07_Prozesssynchronisation.md b/Writerside/topics/BS/07_Prozesssynchronisation.md index 67604e7..634e732 100644 --- a/Writerside/topics/BS/07_Prozesssynchronisation.md +++ b/Writerside/topics/BS/07_Prozesssynchronisation.md @@ -110,3 +110,40 @@ Befehle mit [POSIX API](06_prozessstruktur.md#posix-api) ## Deadlock +(Stillstand / Blockade) ist eine Situation, bei der zwei oder mehr Prozesse auf unbestimmte Weise blockiert sind, weil sie auf die Freigabe von Ressourcen warten + +### Entstehungsbedingungen von Deadlocks +- **Gegenseitiger Ausschluss** + - Mindestens eine Ressource muss exklusiv für immer nur einen Prozess sein +- **Warte-Zustand** + - Prozess hält eine Ressource und wartet bis er die nächste kriegt +- **Nicht-Preemption** + - Ressourcen können nicht zwangsweise (_sondern nur freiwillig_) von Prozess/Thread entzogen werden +- **Zyklus in den Wartebeziehungen** + - Kette von Prozessen/Threads + - P1 wartet auf Ressource von P2, P2 auf P3, ..., PN auf P1 + +### Erkennung von Deadlocks +_Betriebsmittelgraf_ (Ressource Allocation Graph) +- Modelliert _Zuteilung und Freigabe_ von Ressourcen zwischen Prozessen + +![image_84.png](image_84.png) + +- Falls es mehrere Instanzen einer Ressource gibt + - **matrizen-basiertes Verfahren** + - Ressourcenvektor + - Belegungsmatrix + - Anforderungsmatrix + - Ressourcenrestvektor + +#### Beispiel Erkennung von Deadlocks +![image_85.png](image_85.png) +![image_86.png](image_86.png) + +### Livelock +- Form der Blockierung von 2 oder mehr Prozessen, welche aber ständig zwischen mehreren Zuständen wechseln und ihnen nicht entkommen können +- Bspw.: + - 2 Personen kommen sich auf dem Gang entgegen und weichen die ganze Zeit in die gleiche Richtung aus + - Deadlock: + - Personen stehen gegenüber und warten bis der andere beiseite geht, was nicht passiert +