Mehrere Prozesse konkurrieren um Ressourcen und warten endlos darauf, dass andere Prozesse die Ressourcen freigeben, die sie bereits belegen.
Es besteht ein Widerspruch zwischen den begrenzten Ressourcen im Computersystem und den vielen Prozessen, die eine Ressourcenzuweisung erfordern. Wenn die Gesamtzahl der von mehreren Prozessen benötigten Ressourcen größer ist als die Anzahl der Ressourcen, die das System bereitstellen kann, wird der Prozess Ressourcen vorbestellen. Wenn die vom Prozess vorbelegten Ressourcen nicht ordnungsgemäß verwaltet oder zugewiesen werden, kommt es zu einem Deadlock. (Empfohlenes Lernen: Web-Frontend-Video-Tutorial)
Deadlock bezieht sich auf die Tatsache, dass zwei oder mehr Prozesse während der Ausführung um Ressourcen konkurrieren oder miteinander kommunizieren eine Art Blockierphänomen, ohne äußere Kraft werden sie sich nicht vorwärtsbewegen können. Zu diesem Zeitpunkt befindet sich das System in einem Deadlock-Zustand oder das System hat einen Deadlock. Diese Prozesse, die immer aufeinander warten, werden Deadlock-Prozesse genannt.
Bedingungen
Obwohl während des laufenden Prozesses ein Deadlock auftreten kann, müssen bestimmte Bedingungen erfüllt sein, damit ein Deadlock auftritt. Die folgenden vier notwendigen Bedingungen sind erforderlich.
1) Bedingung des gegenseitigen Ausschlusses: Bezieht sich auf die ausschließliche Nutzung zugewiesener Ressourcen durch einen Prozess, dh eine bestimmte Ressource wird innerhalb eines bestimmten Zeitraums nur von einem Prozess belegt. Wenn zu diesem Zeitpunkt andere Prozesse Ressourcen anfordern, kann der Anforderer nur warten, bis der Prozess, der die Ressourcen belegt, aufgebraucht und freigegeben ist.
2) Anforderungs- und Haltebedingungen: Dies bedeutet, dass der Prozess mindestens eine Ressource verwaltet, aber eine neue Ressourcenanforderung gestellt hat und die Ressource zu diesem Zeitpunkt von anderen Prozessen belegt wurde ist blockiert, hat die Ressource aber bereits angefordert. Andere erhaltene Ressourcen bleiben unverändert.
3) Nicht-Entzugsbedingung: Bezieht sich auf die Ressource, die der Prozess erhalten hat. Sie kann nicht entzogen werden, bevor sie aufgebraucht ist, und kann erst dann von selbst freigegeben werden, wenn sie aufgebraucht ist.
4) Schleifenwartebedingung: Wenn ein Deadlock auftritt, muss ein Prozess vorhanden sein – eine kreisförmige Ressourcenkette, d. h. P0 im Prozesssatz {P0, P1, P2,···,Pn} Warten auf eine von P1 belegte Ressource; P1 wartet auf eine von P2 belegte Ressource, ..., Pn wartet auf eine von P0 belegte Ressource.
Ursache
Konkurrenz um Ressourcen führt zu Prozessblockaden
Wenn Ressourcen wie Drucker von mehreren Prozessen im System gemeinsam genutzt werden , öffentliche Warteschlangen usw. Wenn die Anzahl nicht ausreicht, um die Anforderungen der Prozesse zu erfüllen, führt dies dazu, dass die Prozesse um Ressourcen konkurrieren und einen Deadlock verursachen.
Konkurrieren um temporäre Ressourcen
Die oben genannten Druckerressourcen sind nacheinander wiederverwendbare Ressourcen und werden permanente Ressourcen genannt. Es gibt auch eine sogenannte temporäre Ressource, die sich auf eine Ressource bezieht, die von einem Prozess erzeugt, von einem anderen Prozess verwendet wird und nach kurzer Zeit unbrauchbar wird. Daher wird sie auch als verbrauchbare Ressource bezeichnet, beispielsweise als Hardware Interrupts, Signale, Nachrichten und Puffernachrichten usw. können ebenfalls zu einem Deadlock führen.
Das obige ist der detaillierte Inhalt vonUrsachen für einen System-Deadlock. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!