WikiDer > Terminplanung
Terminplanung ist die Art und Weise, wie Prozesse in einer Prioritätswarteschlange von priorisiert werden Multitasking- und MehrfachverarbeitungBetriebssysteme und im Design von a Echtzeit-Betriebssystem. Diese Aufgabe wird ausgeführt von Software was als a bekannt ist Planer oder CPU-Scheduler.
Das Prozessor (CPU) muss regelmäßig lange auf Ein- und Ausgabe warten. Während dieser Wartezeit kann ein Teil eines anderen Prozesses ausgeführt werden. Um zu bestimmen, welcher Prozess ausgeführt werden darf, wird ein Scheduler verwendet. Der Planer muss Prozessorlast Ausgleichen und verhindern, dass ein Prozess die gesamte CPU-Zeit nutzt oder keine CPU-Zeit erhält. Im Echtzeitumgebungen, wie Industrieroboter, stellt der Scheduler auch sicher, dass die Prozesse ihren Frist kann behalten; Dies ist entscheidend, um das System stabil zu halten.
Es gibt mehrere Methoden, um die Zeitplanung zu implementieren. Diese lassen sich in zwei Gruppen einteilen:
- Preemptives Scheduling: Die Prozesse werden während ihrer Ausführung unterbrochen, damit der Scheduler einen anderen Prozess wieder aufnehmen kann. Die Prozesse können unterbrochen werden
- nicht präemptiv: Der Scheduler kann keinen anderen Prozess starten, bis der aktuelle Prozess beendet ist. Die Prozesse können nicht unterbrochen werden
Der Begriff Planer wird auch als Name für ein Programm verwendet, das in regelmäßigen Abständen andere Programme startet. Ein Beispiel dafür ist das Programm cron im Unix-ähnliche Betriebssysteme. Terminplanung mit cron geschieht auf einer einzigen Maschine. Die Planung auf mehreren Maschinen ist mit Cronacle von Redwood möglich, AutoSys von Computer-Mitarbeiter oder Tivoli Workload Scheduler von IBM.
Datenbanken wie Orakel und MySQL haben auch einen eingebauten Planungsmechanismus.
Anforderungen an den Scheduler
Die verschiedenen Algorithmen haben unterschiedliche Eigenschaften und bei der Wahl des Algorithmus für die Planer der Charakter des Betriebssystems bestimmt, welcher Algorithmus gewählt wird. Einige Systeme (z. B. Echtzeitbetriebssysteme) haben strenge Algorithmusanforderungen. Einige Kriterien für die Auswahl der Planer sein:
- CPU-Auslastung: Das Ausmaß, in dem der Prozessor von den verschiedenen Prozessen genutzt wird.
- Flussrate: die Anzahl der Prozesse, die ihre Arbeit in einer bestimmten Zeit erledigen.
- Bearbeitungszeit: Die Zeit, die zum Abschluss eines Prozesses benötigt wird.
- Wartezeit: Die Summe der gesamten Zeit, die ein Prozess in einer Warteschlange verbringt.
- Reaktionszeit: Die Zeit, die benötigt wird, um eine Antwort zu erhalten. Es ist die Zeit zwischen dem Einreichen eines Antrags und dem Erhalten einer Antwort.
Algorithmus-Beispiele
First-Come-First-Served-Planung (FCFS)
Dies ist der einfachste Algorithmus. Wenn ein Prozess zuerst nach der CPU fragt, wird er sie erhalten. Prozesse, die danach kommen, müssen warten. Diese Form der Planung kann durch ein First-in-first-out (FIFO)-Modell implementiert werden. Wenn ein Prozess lange dauert, müssen kurze Prozesse, die ihm folgen, lange warten.
![]()
Shortest-Job-First-Scheduling (SJF)
Mit diesem Algorithmus führt der Scheduler den Prozess mit der kürzesten Länge aus. Ein Problem besteht darin, die Länge eines Prozesses vorherzusagen. Dies kann beispielsweise durch Zählen der Anzahl der Anweisungen oder der Anzahl der Ein- und Ausgabeaufträge erfolgen. Ein Vorteil gegenüber dem FCFS-Algorithmus besteht darin, dass die Latenz bei SJF geringer ist. Der SJF-Algorithmus gibt es in zwei Formen, der präemptiven und der nicht-präemptiven Form. Eine Gefahr beim SJF-Scheduling besteht darin, dass nie ein sehr langer Prozess ausgeführt wird, Hunger (Hunger).
![]()
Prioritätsplanung
Bei diesem Algorithmus wird jedem Prozess eine Priorität zugeordnet. Diese Prioritäten können extern vom Benutzer oder intern vom Betriebssystem vergeben werden. Das Betriebssystem kann anhand von messbaren Werten die Priorität eines Prozesses berechnen. Wir können den vorhergehenden SJF-Algorithmus in Priority Scheduling unterteilen. Lange Prozesse haben dann eine geringere Priorität als kurze Prozesse. Auch hier besteht die Gefahr des Verhungerns, ein Prozess mit sehr niedriger Priorität kann eventuell gar nicht mehr ausgeführt werden. Hunger kann durch Alterung behoben werden (Altern). Je länger sich der Prozess in der Warteschlange befindet, desto höher ist seine Priorität.
![]()
Round-Robin-Planung (RR)
Dieser Planungsalgorithmus verwendet einen festen Zeitwert, der auch als Zeitquantum bekannt ist. Wenn dieses Zeitquantum überschritten wird, unterbricht der Scheduler den Prozess und lädt den nächsten Prozess. Eine Schwierigkeit besteht darin, die Größe des Zeitquants zu bestimmen. Ein zu großes Zeitquantum führt dazu, dass wir ein FCFS-Zeichen erhalten, und ein zu kleines Zeitquantum verursacht einen Overhead von Kontextwechseln. Ein Kontextwechsel ist das Umschalten von Prozessen. Wenn der Scheduler einen Prozess unterbricht, speichert er den aktuellen Status des Prozesses. Wenn das Zeitquantum zu klein ist, beschäftigt sich der Prozessor mehr mit der Verarbeitung von Kontextwechseln als mit der Ausführung von Prozessen.
![]()