Prioritätsscheduling

Prioritätsscheduling

Das Prioritätsscheduling (auch PS – priority scheduling) ist ein in Betriebssystemen häufig verwendetes Zeitaufteilungs-Verfahren (sog. „Scheduling“), das jedem Prozess eine Priorität zuweist und jeweils den lauffähigen Prozess mit der höchsten Priorität zur Ausführung bringt.

Hintergrund

In einem Computer kann ein Prozessorkern immer nur einen Prozess (gleichzeitig) bearbeiten. Um dennoch mehrere Prozesse quasi-gleichzeitig abarbeiten zu können, wechselt der Prozessorkern sehr schnell zwischen diesen - sie erhalten sog. „Zeitscheiben“ (i. A. haben die Zeitscheiben eine feste Dauer im Millisekunden-Bereich). Dabei kann ein höher priorisierter Prozess öfter „an die Reihe kommen“, ein niedriger priorisierter muss dafür länger auf eine Zeitscheibe warten.

Arten und Verfahren

Die Prioritätenvergabe kann 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.

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.

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.

Gefahr Prioritätsinversion

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 1970er 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:

  • Prozessverwaltung — Ein Prozess Scheduler (Scheduler = Steuerprogramm) ist eine Arbitrationslogik, der die zeitliche Ausführung mehrerer Prozesse in Betriebssystemen regelt. Prozess Scheduler kann man grob in unterbrechende (preemptive) und nicht unterbrechende (non …   Deutsch Wikipedia

  • Schedule (Informatik) — Ein Prozess Scheduler (Scheduler = Steuerprogramm) ist eine Arbitrationslogik, der die zeitliche Ausführung mehrerer Prozesse in Betriebssystemen regelt. Prozess Scheduler kann man grob in unterbrechende (preemptive) und nicht unterbrechende (non …   Deutsch Wikipedia

  • Scheduler (Informatik) — Ein Prozess Scheduler (Scheduler = Steuerprogramm) ist eine Arbitrationslogik, der die zeitliche Ausführung mehrerer Prozesse in Betriebssystemen regelt. Prozess Scheduler kann man grob in unterbrechende (preemptive) und nicht unterbrechende (non …   Deutsch Wikipedia

  • Scheduling (Informatik) — Ein Prozess Scheduler (Scheduler = Steuerprogramm) ist eine Arbitrationslogik, der die zeitliche Ausführung mehrerer Prozesse in Betriebssystemen regelt. Prozess Scheduler kann man grob in unterbrechende (preemptive) und nicht unterbrechende (non …   Deutsch Wikipedia

  • Shortest-Remaining-Time — Ein Prozess Scheduler (Scheduler = Steuerprogramm) ist eine Arbitrationslogik, der die zeitliche Ausführung mehrerer Prozesse in Betriebssystemen regelt. Prozess Scheduler kann man grob in unterbrechende (preemptive) und nicht unterbrechende (non …   Deutsch Wikipedia

  • Load Average — Load bezeichnet die momentan laufenden oder auf bestimmte Ereignisse wartenden Prozesse auf einem Computersystem. Man spricht dabei davon, dass „der Rechner einen Load von X hat“ (wobei X eine reelle Zahl größer gleich null ist). Sie wird… …   Deutsch Wikipedia

  • Loadavg — Load bezeichnet die momentan laufenden oder auf bestimmte Ereignisse wartenden Prozesse auf einem Computersystem. Man spricht dabei davon, dass „der Rechner einen Load von X hat“ (wobei X eine reelle Zahl größer gleich null ist). Sie wird… …   Deutsch Wikipedia

  • NICE — ist der englische Name der südfranzösischen Stadt Nizza der Name der Musikgruppe The Nice das englische Wort für nett die Programmiersprache Nice (Programmiersprache) einen Unix Befehl, der das Prioritätsscheduling eines Prozesses verändern kann… …   Deutsch Wikipedia

  • Priority inversion — Dieser Artikel oder Abschnitt ist nicht hinreichend mit Belegen (Literatur, Webseiten oder Einzelnachweisen) versehen. Die fraglichen Angaben werden daher möglicherweise demnächst gelöscht. Hilf Wikipedia, indem du die Angaben recherchierst und… …   Deutsch Wikipedia

  • Prioritätsumkehr — Dieser Artikel oder Abschnitt ist nicht hinreichend mit Belegen (Literatur, Webseiten oder Einzelnachweisen) versehen. Die fraglichen Angaben werden daher möglicherweise demnächst gelöscht. Hilf Wikipedia, indem du die Angaben recherchierst und… …   Deutsch Wikipedia

Share the article and excerpts

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