Prioritäts-Scheduling

Prioritäts-Scheduling

Das Prioritätsscheduling (auch PS – priority scheduling) ist ein in Betriebssystemen häufig verwendetes Scheduling-Verfahren.

Das Prinzip ist einfach: Jedem Prozess wird eine Priorität zugewiesen und nur der lauffähige Prozess mit höchster Priorität wird zur Ausführung gebracht. Dabei kann die Prioritätenvergabe statisch oder dynamisch erfolgen. In Echtzeitsystemen wird häufig eine statische Prioritätenvergabe verwendet, während andere Systeme oftmals dynamische Prioritäten nutzen. Bei dynamischer Prioritätenvergabe wird die Priorität mit jedem Timertick verringert, bis ein anderer Prozess eine höhere Priorität als der aktuell lauffähige besitzt.

Mittels intelligenter Algorithmen zur Prioritätenvergabe können verschiedene Systemziele erreicht werden. So ist es möglich, Prozessprioritäten bei Prozessen mit starkem I/O dynamisch zu vergrößern, um die Interaktivität des Systems zu verbessern.

Auch die Einteilung von Prozessen in verschiedene Prioritätenklassen ist möglich. Zwischen den einzelnen Prioritätenklassen wird typischerweise ein Round-Robin-Scheduling verwendet. Ein Beispiel für einen Scheduler mit dynamisch verwalteten Prioritätsklassen ist der Multilevel Feedback Queue Scheduler.

Es besteht die Gefahr der Prioritätsinversion, die auftritt, wenn ein Prozess mit niedriger Priorität eine Ressource mit Hilfe einer Semaphorvariablen exklusiv belegt hat (p()-Operation), die von einem Prozess mit hoher Priorität benötigt wird.

Obwohl der hochpriore Prozess eigentlich ausgeführt werden sollte, muss er warten, bis der niederpriore Prozess die Ressource mit einer v()-Operation wieder freigibt. Dieses Problem kann durch einen Prozess mittlerer Priorität verschärft werden, da dieser sowohl den hoch- wie niederprioren Prozess nun beliebig lange verdrängen kann.

Ein berühmter Absturz, der auf diesen Fehler zurückgeführt wurde, ist der Beinahe-Verlust der Pathfinder-Marssonde.

Obwohl das Problem seit den 70er Jahren bekannt ist, ist noch keine optimale Lösung gefunden worden. Zwei bekannte Lösungsansätze sind die Prioritätsgrenze oder -schranke (Priority Ceiling) und die Prioritätsvererbung (Priority Inheritance).


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Priority Ceiling Protocol — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Die Prioritätsgrenze, engl. priority ceiling protocol ist eine… …   Deutsch Wikipedia

  • Prioritätsgrenze — Die Prioritätsgrenze (englisch priority ceiling protocol) ist eine Methode zur Behebung des Problems der Prioritätsinversion, und der Vermeidung von Deadlocks. Sie ist eine Erweiterung der Prioritätsvererbung, kann aber im Gegensatz zu dieser… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”