| Zeile 3: | Zeile 3: | ||
= non-preemptive = | = non-preemptive = | ||
| − | Prozesse geben Kontrolle freiwillig ab. | + | Prozesse geben Kontrolle freiwillig ab. Non-preemptive Scheduling-Strategien sind für Dialogbetrieb weniger und für RT-Betrieb überhaupt nicht geeignet. Ein Benutzer könnte im ersten Fall die Rechnerbenutzung für alle anderen Benutzer unmöglich machen, im zweiten Fall könnte ein ´Langläufer´ andere Prozesse daran hindern, vor ihrer Deadline fertig zu werden – mit |
| + | allen möglichen Folgen... Deshalb wird bei preemptive Scheduling-Strategien das OS ermächtigt, Prozessen den Prozessor wieder wegzunehmen – bei den meisten Strategien findet das auch routinemäßig statt. | ||
== FCFS - First Come First Served == | == FCFS - First Come First Served == | ||
| Zeile 20: | Zeile 21: | ||
Nachteile: | Nachteile: | ||
* kurz laufende Prozesse müssen u.U. sehr lange warten, daher für Dialogsysteme nicht geeignet. | * kurz laufende Prozesse müssen u.U. sehr lange warten, daher für Dialogsysteme nicht geeignet. | ||
| + | |||
| + | == SJF - Smallest Job First == | ||
| + | Prozess mit küzester Bedienzeit kommt zuerst. | ||
| + | Bsp: | ||
| + | Bedienzeiten: P1=22, P2=2, P3=3, P4=5, P5=8 | ||
| + | Antwortzeiten: R1=40, R2=2, R3=5, R4=10, R5=18 | ||
| + | durchschnittliche Antwortzeit: 15 | ||
| + | |||
| + | Vorteile: | ||
| + | * garantiert minimale durchschnittliche Antwortzeit | ||
| + | * kurz laufende Prozesse werden nicht benachteiligt | ||
| + | * Algorithmus relativ leicht zu implementieren, wenn die Dauer des nächsten CPU burst bekannt ist | ||
| + | |||
| + | Nachteile: | ||
| + | * lang laufene Prozesse müssen evt sehr lange warten | ||
| + | * größerer Verwaltungsaufwand | ||
| + | |||
| + | == Priority scheduling == | ||
| + | Reihenfolge nach Priorität der Prozesse. Prioritäten können statisch oder dynamisch vergeben werden. | ||
| + | |||
| + | Vorteile: | ||
| + | * dringende Aufgaben werden am schnellsten erledigt | ||
| + | |||
| + | Nachteile: | ||
| + | * bei statischer Prioritätsvergabe evt ´Aushungern´ von Prozessen | ||
| + | * Vergabe der Prioritäten nicht einfach | ||
= preemptive = | = preemptive = | ||
| Zeile 26: | Zeile 53: | ||
== Round Robin == | == Round Robin == | ||
Alle Prozesse werden gleichberechtigt. Ein Prozess kommt nach dem Anderen an die Reihe. Jeder Prozess wird nach einer festen Zeit gestoppt und der nächste gestartet. | Alle Prozesse werden gleichberechtigt. Ein Prozess kommt nach dem Anderen an die Reihe. Jeder Prozess wird nach einer festen Zeit gestoppt und der nächste gestartet. | ||
| + | Bsp | ||
| + | Bedienzeiten: P1=22, P2=2, P3=3, P4=5, P5=8 | ||
| + | Zeitscheibe: 3 Zeiteinheiten | ||
| + | Antwortzeiten: R1=40, R2=5, R3=8, R4=19, R5=27 | ||
| + | durchschnittliche Antwortzeit: 19.8 | ||
| + | |||
| + | Vorteile: | ||
| + | * Fairness, jeder Prozess bekommt ´seinen´ Anteil an dem Prozessor | ||
| + | * kurz laufende Prozesse werden nicht benachteiligt | ||
| + | * einfach zu implementieren | ||
| + | * wenig Verwaltungsaufwand | ||
| + | |||
| + | Nachteile: | ||
| + | * langlaufende Prozesse müssen bis zu ihrem Ende lange warten | ||
== Round Robin (mit Prioritäten) == | == Round Robin (mit Prioritäten) == | ||
Jeder Prozess bekommt zu Anfang nach Priorität eine gewisse Zeit (Ausführzeit) zugeordnet. Dabei sollte die Zeit gleich oder ein Vielfaches der Scheduler-Frequenz (Die Frequenz in der der Scheduler aufgerufen wird) sein. Die Prozesse werden wie beim "normalen" [[#Round Robin | Round Robin]] nacheinander ausgeführt. Diesmal wird aber zum nächsten Prozess erst gewechselt, wenn beim vorherigen die Ausführzeit abgelaufen ist. | Jeder Prozess bekommt zu Anfang nach Priorität eine gewisse Zeit (Ausführzeit) zugeordnet. Dabei sollte die Zeit gleich oder ein Vielfaches der Scheduler-Frequenz (Die Frequenz in der der Scheduler aufgerufen wird) sein. Die Prozesse werden wie beim "normalen" [[#Round Robin | Round Robin]] nacheinander ausgeführt. Diesmal wird aber zum nächsten Prozess erst gewechselt, wenn beim vorherigen die Ausführzeit abgelaufen ist. | ||
| − | |||
| − | |||
| − | |||
| − | |||
== Scheduling mit "Prioritätswarteschlangen" == | == Scheduling mit "Prioritätswarteschlangen" == | ||