Was ist ein Deadlock in der Informatik?

6 Antworten

Ein Prozess befindet sich "im deadlock", wenn er im Zuge seiner Abarbeiting von Code in eine Schleife geraten ist, die er nicht mehr verlassen kann, da ein und derselbe Zustand immer wieder auftritt.

Deadlocks sind Folge von Programmierfehlern


Waldelb3  10.05.2022, 14:33
0
grtgrt  10.05.2022, 14:43
@Waldelb3

Der in Wikipedia beschriebene Fall ist Spezialfall meiner (allgemeineren) Definition.

0
Waldelb3  10.05.2022, 15:08
@grtgrt
  1. Eine Endlosschleife ist kein Deadlock
  2. Ein Deadlock muss keine Endlosschleife sein. Es gibt andere Möglichkeiten auf Ressourcen zu warten als ein Spinlock.
  3. Das Ganze muss kein Programmierfehler sein. Du kannst dich auch aus Performancegründen dazu entschließen, Deadlocks zu ignorieren, und im Falle, dass doch einer auftritt eben einen Prozess killen.
0
grtgrt  10.05.2022, 20:28
@Waldelb3
  1. ist falsch.
  2. ist richtig.
  3. Nützlich sind nur deadlock-freie Programme.
0
Waldelb3  10.05.2022, 20:32
@grtgrt

1) Ein Deadlock ist anders definiert

3) Nö. Wie gesagt, kann man sich bewusst dagegen entscheiden. Ist einfach eine Design-Entscheidung. Kommt alles auf den Anwendungsfall an.

0
grtgrt  10.05.2022, 20:34
@Waldelb3

Glaub', was Du willst. Andere (und ich auch) sehen es anders.

0

Max und Moritz wollen Kuchen essen. Dafür brauchen sie jeweils ein Stück Kuchen und Besteck. Leider gibt es nur ein Messer und eine Gabel. Ein Stück Kuchen haben sie beide auf dem Teller, Max hat die Gabel und Moritz hat das Messer. Max wartet jetzt darauf dass Moritz mit Essen fertig wird, um dann das Messer nutzen zu können. Moritz wartet darauf, dass Max mit Essen fertig wird, um die Gabel nutzen zu können.

Visualisierung: https://external-preview.redd.it/fkevnztVx_7Bk77ZtdcU4otjNTBD9aGcxLFhgYlzE0I.jpg?auto=webp&s=73a1309389dab0467a83b7b26848ce13403f9054

Woher ich das weiß:Studium / Ausbildung – Informatik

Ein Deadlock ist eine Situation, wo sich zwei
oder mehr Programm(teil)e gegenseitig blockieren,
so dass keiner von beiden mehr weiter kommt.


risingEagle 
Fragesteller
 10.05.2022, 14:24

Aber dann muss man die doch crashen, oder nicht? Weil sonst hängt sich doch das System auf und man kommt nicht weiter?

0
Waldelb3  10.05.2022, 14:27
@risingEagle

Das System hängt sich nur dann auf, wenn es aus welchem Grund auch immer auf das Programm wartet. Sollte eigentlich nicht passieren.

0
Tannibi  10.05.2022, 14:32
@risingEagle

Nein. Einfache Situation: Zwei gleichzeitig laufende
Programmteile, sog. Threads, brauchen beide die Dateien
A und B. Der erste Thread blockert A, der zweite B.
Jetzt will der erste noch B haben, bekommt es aber nicht,
weil es vom zweiten blockiert ist. Der zweite will noch A
haben, bekommt es aber aus demselben Grund nicht. Da beide
A und B brauchen, warten sie, bis die jeweilige Datei frei wird.
Das wird sie aber nie, so dass sie bis in alle Ewigkeit warten.

1

Unter einem Deadlock/ einer Verklemmung versteht man in der Informatik einen Zustand, bei dem eine zyklische Wartesituation zwischen mehreren Prozessen auftritt, wobei jeder beteiligte Prozess auf die Freigabe von Betriebsmitteln wartet, die ein anderer beteiligter Prozess bereits exklusiv belegt hat.

Mit Monitoren können Verklemmungen vorbeugend verhindert werden. Damit lassen sich geschützte Programmabschnitte definieren, die immer nur von einem Prozess gleichzeitig ausgeführt werden dürfen.

Deadlocks kommen bei Programmierfehlern vor und sind so etwas wie eine Endlosschleife, weil der eine Befehl [B2] auf den anderen [B1] wartet und dieser [B1] wartet auf den ersten [B2], und so weiter...

Woher ich das weiß:Hobby