Empfohlen, 2020

Tipp Der Redaktion

Unterschied zwischen Deadlock und Starvation im Betriebssystem

Deadlock und Starvation sind beide Bedingungen, unter denen die Prozesse, die eine Ressource anfordern, lange verzögert wurden. Obwohl Deadlock und Hunger sich in vielen Aspekten voneinander unterscheiden. Deadlock ist eine Bedingung, bei der kein Prozess zur Ausführung ausgeführt wird und jeder auf Ressourcen wartet, die von den anderen Prozessen abgerufen wurden. Auf der anderen Seite, in Starvation, verwendet ein Prozess mit hohen Prioritäten kontinuierlich die Ressourcen, wodurch ein Prozess mit niedriger Priorität verhindert wird, um die Ressourcen zu erhalten. Lassen Sie uns mit Hilfe der unten gezeigten Vergleichstabelle einige weitere Unterschiede zwischen Deadlock und Hunger diskutieren.

Vergleichstabelle

Grundlage für den VergleichSackgasseHunger
BasicDeadlock ist, wo kein Prozess abläuft und blockiert wird.Bei Hungern werden Prozesse mit niedriger Priorität blockiert, und der Prozess mit hoher Priorität wird fortgesetzt.
Auftretender ZustandDas Auftreten von gegenseitigem Ausschluss, Halten und Warten, Keine Vorkaufsrecht und Zirkulares Warten gleichzeitig.Durchsetzung von Prioritäten, unkontrolliertes Ressourcenmanagement.
Anderer NameZirkulares WartenLebenssack
RessourcenIn Deadlock werden angeforderte Ressourcen von den anderen Prozessen blockiert.Beim Hungern werden die angeforderten Ressourcen kontinuierlich von Prozessen mit hoher Priorität verwendet.
VerhütungVermeiden Sie gegenseitige Ausgrenzung, warten und warten, zyklisches Warten und Erlauben.Altern.

Definition von Deadlock

Deadlock ist eine Situation, in der die verschiedenen Prozesse in der CPU um die begrenzte Anzahl von Ressourcen in der CPU konkurrieren. Hier hält jeder Prozess eine Ressource und wartet auf den Erwerb einer Ressource, die von einem anderen Prozess gehalten wird. Alle Prozesse warten kreisförmig auf Ressourcen. In der Abbildung unten sehen Sie, dass der Prozess P1 die Ressource R2 erworben hat, die vom Prozess P2 angefordert wurde, und der Prozess P1 fordert die Ressource R1 an, die erneut von R2 gehalten wird. Die Prozesse P1 und P2 bilden also einen Deadlock.

Deadlock ist ein häufiges Problem bei Betriebssystemen mit mehreren Prozessoren, verteilten Systemen und auch bei parallelen Computersystemen. Es gibt vier Bedingungen, die gleichzeitig auftreten müssen, um die Bedingung des Stillstands zu erhöhen. Dies sind gegenseitiger Ausschluss, Halten und Warten, Keine Vorkaufsfrist und Zirkulares Warten.

  • Gegenseitiger Ausschluss: Nur jeweils ein Prozess kann eine Ressource verwenden, wenn ein anderer Prozess dieselbe Ressource anfordert. Er muss warten, bis der Prozess, der die Ressource verwendet, ihn freigibt.
  • Halten und Warten: Ein Prozess muss eine Ressource enthalten und auf den Erwerb einer anderen Ressource warten, die von einem anderen Prozess gehalten wird.
  • Keine Vorauszahlung: Der Prozess, der die Ressourcen hält, kann nicht ausgeschlossen werden. Der Prozess, der die Ressource enthält, muss die Ressource freiwillig freigeben, wenn sie ihre Aufgabe erfüllt hat.
  • Zirkulares Warten: Der Prozess muss kreisförmig auf Ressourcen warten. Angenommen, wir haben drei Prozesse {P0, P1, P2}. Das P0 muss auf die von P1 gehaltene Ressource warten; P1 muss warten, um die vom Prozess P2 gespeicherte Ressource zu erhalten, und P2 muss warten, um den von P0 gehaltenen Prozess zu erhalten.

Es gibt zwar einige Anwendungen, die die Programme erkennen können, die blockiert sind. Das Betriebssystem ist jedoch niemals dafür verantwortlich, Deadlocks zu verhindern. Es liegt in der Verantwortung der Programmierer, Deadlock-freie Programme zu entwerfen. Dies kann geschehen, indem die oben genannten Bedingungen vermieden werden, die für das Auftreten eines Deadlocks erforderlich sind

Definition von Hunger

Hunger kann definiert werden als wenn eine Prozessanforderung für eine Ressource und diese Ressource kontinuierlich von den anderen Prozessen verwendet wurde, dann ist der anfordernde Prozess einem Hunger ausgesetzt. Beim Ausharren wartet ein Prozess, der zur Ausführung bereit ist, darauf, dass die CPU die Ressource zuweist. Der Prozess muss jedoch auf unbestimmte Zeit warten, da die anderen Prozesse die angeforderten Ressourcen kontinuierlich blockieren.

Das Problem des Hungers tritt im Allgemeinen beim Prioritätsplanungsalgorithmus auf . Beim Prioritätsplanungsalgorithmus wird dem Prozess mit der höheren Priorität immer die Ressource zugewiesen, wodurch verhindert wird, dass der Prozess mit der niedrigeren Priorität die angeforderte Ressource erhält.

Altern kann das Hungerproblem lösen. Das Altern erhöht allmählich die Priorität des Prozesses, der lange auf die Ressourcen gewartet hat. Durch das Altern wird verhindert, dass ein Prozess mit niedriger Priorität unbegrenzt auf eine Ressource wartet.

Hauptunterschiede zwischen Deadlock und Starvation im Betriebssystem

  1. In einem Deadlock läuft keiner der Prozesse zur Ausführung ab, jeder Prozess wird blockiert und wartet auf die Ressourcen, die von einem anderen Prozess abgerufen werden. Auf der anderen Seite ist Hungern eine Bedingung, unter der die Prozesse mit höherer Priorität die Ressourcen kontinuierlich erwerben können, indem verhindert wird, dass die Prozesse mit niedriger Priorität Ressourcen erwerben, was zu einer unbegrenzten Blockierung von Prozessen mit niedriger Priorität führt.
  2. Ein Deadlock entsteht, wenn vier Bedingungen gleichzeitig auftreten: Gegenseitiger Ausschluss, Halten und Warten, Keine Vorkaufsfrist und Zirkulares Warten . Ein Hunger tritt jedoch auf, wenn die Prozessprioritäten beim Zuweisen von Ressourcen erzwungen wurden oder im System eine unkontrollierte Ressourcenverwaltung vorhanden ist.
  3. Deadlock wird oft vom Namen Circular Wait aufgerufen , während das Verhungern als Lived Lock bezeichnet wird .
  4. In Deadlock werden die Ressourcen durch den Prozess blockiert, während in Hunger die Prozesse kontinuierlich von Prozessen mit hohen Prioritäten verwendet werden.
  5. Deadlock kann verhindert werden, indem die Bedingungen wie gegenseitiger Ausschluss, Halten und Warten und zyklisches Warten vermieden werden und indem die Prozesse, die Ressourcen für lange Zeit halten, zugelassen werden. Auf der anderen Seite kann ein Verhungern durch Alterung verhindert werden.

Fazit:

Sowohl Deadlock als auch Starvation verzögern die Prozessausführung durch Blockieren. Einerseits kann ein Deadlock dazu führen, dass Prozesse verhungern, und andererseits kann ein Hunger die Prozesse aus dem Deadlock bringen.

Top