Hunger (Informatik)

Im Informatik, Ressourcenhunger ist ein Problem, das in angetroffen wird Gleichzeitiges Computer wo ein Prozess wird ständig notwendig verweigert Ressourcen seine Arbeit zu verarbeiten.[1] Hunger kann durch Fehler in einer Planung oder durch Fehler verursacht werden gegenseitiger Ausschluss Algorithmus, kann aber auch durch verursacht werden Ressourcenlecksund kann absichtlich über a verursacht werden Denial-of-Service-Angriff so wie ein Gabelbombe.

Wenn der Hunger in a unmöglich ist Gleichzeitiger AlgorithmusDer Algorithmus heißt hungerfrei, Lockout-Freed[2] oder gesagt zu haben endlicher Bypass.[3] Diese Eigenschaft ist eine Instanz von Lebendigkeitund ist eine der beiden Anforderungen für jeden gegenseitigen Ausschlussalgorithmus; das andere Wesen Richtigkeit. Der Name "endlicher Bypass" bedeutet, dass jeder Prozess (gleichzeitiger Teil) des Algorithmus höchstens eine endgültige Anzahl von Zeiten umgangen wird, bevor der Zugriff auf die zugelassen wird gemeinsame Ressource.[3]

Planung

Hunger wird normalerweise durch eine übermäßig vereinfachte verursacht Planungsalgorithmus. Zum Beispiel wenn a (schlecht gestaltet) Multitasking-System Wechselt immer zwischen den ersten beiden Aufgaben, während ein Drittel nie ausgeführt wird, dann wird die dritte Aufgabe verhungert CPU -Zeit. Der Planungsalgorithmus, der Teil der ist Kernel, soll Ressourcen gleichermaßen zuweisen; Das heißt, der Algorithmus sollte Ressourcen zuweisen, so dass kein Prozess ständig die erforderlichen Ressourcen fehlen.

Viele Betriebssystemplaner verwenden das Konzept der Prozesspriorität. Ein Prozess mit hoher Priorität A wird vor einem Prozess mit niedriger Priorität B ausgeführt. Wenn der Prozess mit hoher Priorität (Prozess A) blockiert und niemals ergibt, wird der Prozess mit niedriger Priorität (b) (in einigen Systemen) nie geplant - es wird Hunger erleben. Wenn es einen noch höheren Prioritätsprozess X gibt, der von einem Ergebnis aus Prozess B abhängt, wird der Prozess X möglicherweise nie fertiggestellt, obwohl dies der wichtigste Prozess im System ist. Dieser Zustand wird als a genannt Prioritätsinversion. Moderne Planungsalgorithmen enthalten normalerweise Code, um sicherzustellen, dass alle Prozesse einen Mindestbetrag jeder wichtigen Ressource (meistens CPU -Zeit) erhalten, um zu verhindern, dass ein Prozess dem Hunger ausgesetzt wird.

In Computernetzwerken, insbesondere drahtlose Netzwerke, Planungsalgorithmen kann unter Planungshunger leiden. Ein Beispiel ist Maximale Durchsatzplanung.

Hunger wird normalerweise durch verursacht durch Sackgasse In diesem Fall wird ein Prozess gefriert. Zwei oder mehr Prozesse werden abgestimmt, wenn jeder von ihnen nichts tut, während er auf eine Ressource wartet, die von einem anderen Programm im selben Satz besetzt ist. Andererseits ist ein Prozess im Hunger, wenn er auf eine Ressource wartet, die kontinuierlich anderen Prozessen gegeben wird. Hunger-Freigabe ist eine stärkere Garantie als das Fehlen von Deadlock: ein gegenseitiger Ausschlussalgorithmus, der sich entscheiden muss, um einen von zwei Prozessen in a zuzulassen Kritischer Abschnitt Und wählt man willkürlich tadlockfrei, aber nicht hungerfrei.[3]

Eine mögliche Lösung für den Hunger besteht darin, einen Planungsalgorithmus mit vorrangiger Warteschlange zu verwenden, die auch das verwendet Altern Technik. Altern ist eine Technik, um die Priorität von Prozessen, die lange im System warten, allmählich zu erhöhen.[4]

Siehe auch

Verweise

  1. ^ Tanenbaum, Andrew (2001). Modern Operating Systems. Prentice Hall. pp.184–185. ISBN 0-13-092641-8.
  2. ^ Herlihy, Maurice; Shavit, Nir (2012). Die Kunst der Multiprozessor -Programmierung. Elsevier. p. 24. ISBN 9780123977953.
  3. ^ a b c Raynal, Michel (2012). Gleichzeitige Programmierung: Algorithmen, Prinzipien und Grundlagen. Springer Science & Business Media. S. 10–11. ISBN 3642320279.
  4. ^ Galvin, Peter (2010). Betriebssystemkonzepte. Wiley India Edition. p. 193. ISBN 978-81-265-2051-0.