Das Betriebssystem ist die grundlegendste Software, die auf einem Computer ausgeführt wird. Es ist für die Verwaltung des Arbeitsspeichers und der Prozesse des Computers sowie für die Abschirmung der Hardwaredetails von den Anwendungsprogrammen verantwortlich, die ihn verwenden. Das Betriebssystem eines Computers gewährleistet außerdem eine angemessene Zuteilung von Ressourcen an Benutzer und Programme im Gegensatz zu einer gleichmäßigen Verteilung zwischen Prozessen. Ein Fair-Scheduling-System ermöglicht es einem Prozess, die CPU zu verwenden, während der andere in der Warteschlange wartet. Infolgedessen erhält jeder Thread genügend Zugriff auf begrenzte Ressourcen, wodurch die zwei häufigsten Bedingungen verhindert werden, die den Prozess sonst verzögert hätten: Deadlock und Starvation. Beides sind verwandte Konzepte, bei denen die Prozesse keinen Zugriff auf die Ressourcen haben. In diesem Artikel werden einige wichtige Punkte hervorgehoben, die die beiden an verschiedenen Fronten vergleichen.
Deadlock ist eine Bedingung, bei der eine Gruppe von Threads blockiert wird, da jeder Prozess, der eine Ressource enthält, versucht, auf andere Ressourcen zuzugreifen, die von einem anderen Prozess angehalten werden, wodurch möglicherweise eine gerechte Systemplanung verhindert wird. Eine Deadlock-Situation tritt auf, wenn die folgenden vier Bedingungen erfüllt sind: Gegenseitiger Ausschluss bedeutet, dass jeweils nur ein Prozess auf eine Ressource zugreifen kann. Keine Vorkaufsbedingung bedeutet, dass eine Ressource nur freiwillig von dem Prozess freigegeben werden kann, der die Ressource hält. Hold & Wait bedeutet, dass ein Prozess, der Ressourcen hält, zusätzliche Ressourcen anfordern kann, die von anderen Prozessen vorgehalten werden. Zirkulares Warten bedeutet, dass zwei oder mehr Prozesse in einer kreisförmigen Kette hängen bleiben und darauf warten, dass jeder Prozess seine jeweiligen Ressourcen freigibt.
Hunger ist eine Bedingung, die entsteht, wenn ein Prozess unbegrenzt in die Wartezeit eintritt, da ein Prozess mit niedriger Priorität aufgrund eines konstanten Flusses von Prozessen mit hoher Priorität, die auf dieselbe Ressource zugreifen, nie die Chance hat, auf die Ressource zuzugreifen. Dies ist ein Ressourcenverwaltungsproblem, da einem Prozess der Zugriff auf die erforderliche Ressource verweigert wird, wodurch der Prozess in eine unbestimmte Wartezeit verschoben wird. Dies geschieht, weil die benötigte Ressource niemals dem Prozess zugewiesen wird, der dazu führt, dass der Prozess nach Ressourcen ausharrt, daher der Name. Der beste Weg, um zu verhungern, ist die Alterungstechnik, die die Priorität von Prozessen, die sich lange in der Wartezeit befinden, allmählich erhöht, um ein faires Zeitplanungssystem zu gewährleisten.
Sowohl Deadlock als auch Hunger sind verwandte Konzepte, die eine gerechte Systemplanung verhindern, bei der die Prozesse blockiert werden, um Zugriff auf die Ressourcen zu erhalten. Deadlock bezieht sich, wie der Name schon sagt, auf eine Bedingung, bei der eine Gruppe von Threads oder Prozessen blockiert wird, da jeder Prozess darauf wartet, eine Ressource zu erwerben, die von einem anderen Prozess angehalten wird, was zu einer Deadlock-Situation führt, in der die Programme nicht mehr funktionieren. Starvation wird dagegen durch einen Deadlock ausgelöst, der dazu führt, dass ein Prozess einfriert, da einem Prozess mit niedriger Priorität der Zugriff auf eine Ressource verweigert wird, die einem Prozess mit hoher Priorität zugeordnet ist.
Ein Deadlock bezieht sich auf eine bestimmte Bedingung, die auftritt, wenn ein Thread oder ein Prozess in eine Wartezeit versetzt wird, weil die angeforderte Systemressource von einem anderen Prozess angehalten wird, der wiederum darauf wartet, dass ein anderer Prozess seine Ressource freigibt, wodurch ein Deadlock erstellt wird. Dies liegt an einer schlechten Ressourcennutzung. Hunger ist eine unbestimmte Verschiebungsbedingung, bei der einem Prozess mit niedriger Priorität der Zugriff auf die benötigten Ressourcen verweigert wird, da die Ressourcen einem anderen Prozess mit hoher Priorität zugewiesen werden. Dies ist ein Problem des Ressourcenmanagements, das das System zwingt, Ressourcen nur Prozessen mit hoher Priorität zuzuordnen.
Deadlock ist die ultimative Form des Verhungerns, die verursacht wird, wenn die folgenden vier Bedingungen gleichzeitig auftreten: Gegenseitiger Ausschluss, Keine Vorauszahlung, Halten und Warten und Zirkulares Warten. Eine Deadlock-Bedingung tritt nur in Systemen auf, in denen alle vier Bedingungen zutreffen. Das Verhindern von Hunger beruht auf verschiedenen Bedingungen, z. B. wenn nicht genügend Ressourcen vorhanden sind und die Priorität von Prozessen abnimmt oder wenn Prozesse beginnen, Ressourcen ohne Kontrolle an andere Prozesse zu übergeben. Wenn ein Prozess mit niedriger Priorität eine Ressource anfordert, die für Prozesse mit der höchsten Priorität reserviert ist, verharrt der Prozess für immer. Hunger tritt auch auf, wenn Ressourcen willkürlich zugewiesen werden, wodurch Prozesse länger warten.
Verhungern kann verhindert werden, indem ein geeigneter Scheduling-Algorithmus mit Prioritätswarteschlange verwendet wird, der in der Tat auch die Alterungstechnik verwendet - eine Scheduling-Technik, die den Alterungsfaktor zur Priorität jeder Anforderung hinzufügt, was bedeutet, dass die Priorität von Prozessen mit niedriger Priorität, die gewartet haben, erhöht wird Für eine lange Zeit. Durch die Bereitstellung von mehr Ressourcen für die Programme sollte eine anhaltende Überlastung der Ressourcen vermieden werden. Um zu verhindern, dass das System in einen Deadlock gerät, muss Prozessen der Zugriff auf eine oder mehrere Ressourcen verweigert werden, während gleichzeitig auf andere gewartet wird, und es sollte jeweils nur ein Prozess auf eine Ressource zugreifen dürfen.
Sowohl Deadlock als auch Starvation sind verwandte Konzepte in Multiprocessing-Betriebssystemen oder verteilten Systemen, die dazu führen, dass ein oder mehrere Threads oder Prozesse beim Warten auf die benötigten Ressourcen hängen bleiben. Deadlock ist eine Situation, die auftritt, wenn ein oder mehrere Prozesse Zugriff auf dieselbe Ressource anfordern, was zum Einfrieren des Prozesses führt, während Hunger durch Deadlock verursacht wird, durch den der Prozess in einen unbegrenzten Verschiebungszustand versetzt wird, da Prozessen der Zugriff auf eine Ressource verweigert wird Prozess mit hoher Priorität und muss ewig warten.