This commit is contained in:
David Schirrmeister 2024-05-03 10:33:53 +02:00
parent f6531d7b5d
commit f85da5b806
4 changed files with 37 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -110,3 +110,40 @@ Befehle mit [POSIX API](06_prozessstruktur.md#posix-api)
## Deadlock ## 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