Planung (Computer)
Im Computer, Planung ist die Aktion der Zuweisung Ressourcen aufführen Aufgaben. Das Ressourcen vielleicht Prozessoren, Netzwerkverbindungen oder Erweiterungskarten. Das Aufgaben vielleicht Themen, Prozesse oder Daten fließt.
Die Planungsaktivität erfolgt durch einen genannten Prozess Planer. Scheduler werden häufig so konzipiert, dass alle Computerressourcen beschäftigt sind (wie in Lastverteilung), ermöglichen es mehreren Benutzern, Systemressourcen effektiv zu teilen oder ein Ziel zu erreichen Servicequalität.
Planung ist für die Berechnung selbst und ein intrinsischer Teil der von grundlegender Bedeutung Ausführungsmodell eines Computersystems; Das Konzept der Planung ermöglicht es, haben zu haben Computer Multitasking mit einer einzigen Zentrale Verarbeitungseinheit (ZENTRALPROZESSOR).
Ziele
Ein Scheduler kann beispielsweise auf ein oder mehrere Ziele abzielen:
- Maximierung Durchsatz (die Gesamtbetrag der pro Zeiteinheit abgeschlossen);
- Minimierung Wartezeit (Die Zeit von der Arbeit wird bereit bis zum ersten Punkt, in dem es ausführt);
- Minimierung Latenz oder Reaktionszeit (Zeit von der Arbeit wird bereit, bis sie bei der Chargenaktivität fertig ist,[1][2][3] oder bis das System bei interaktiver Aktivität die erste Ausgabe an den Benutzer reagiert und übergibt);[4]
- Maximierung Gerechtigkeit (Gleiche CPU -Zeit zu jedem Prozess oder allgemein angemessene Zeiten entsprechend der Priorität und Arbeitsbelastung jedes Prozesses).
In der Praxis Konflikten häufig Konflikte (z. B. Durchsatz gegen Latenz), sodass ein Scheduler einen geeigneten Kompromiss implementiert. Die Präferenz wird anhand eines der oben genannten Bedenken gemessen, abhängig von den Bedürfnissen und Zielen des Benutzers.
Im Echtzeit Umgebungen wie z. eingebettete Systeme zum automatische Kontrolle in der Industrie (zum Beispiel Robotik) Der Scheduler muss auch sicherstellen, dass sich Prozesse erfüllen können Fristen; Dies ist entscheidend, um das System stabil zu halten. Geplante Aufgaben können auch auf Remote -Geräte über ein Netzwerk verteilt werden und gelang es durch ein administratives Back End.
Arten von Betriebssystemplanern
Der Scheduler ist ein Betriebssystemmodul, das die nächsten Jobs auswählt, die in das System zugelassen werden, und den nächsten Prozess. Betriebssysteme können bis zu drei verschiedene Scheduler -Typen enthalten: a Langzeitplaner (auch als Zulassungsscheduler oder hoher Scheduler bezeichnet), a mittelfristig oder mittelfristig Scheduler, und ein Kurzzeitplaner. Die Namen deuten auf die relative Häufigkeit hin, mit der ihre Funktionen ausgeführt werden.
Prozessplaner
Der Prozessplaner ist Teil des Betriebssystems, der entscheidet, welcher Prozess zu einem bestimmten Zeitpunkt ausgeführt wird. Normalerweise können Sie einen Laufprozess innehalten, auf die Rückseite der laufenden Warteschlange verschieben und einen neuen Prozess starten. Ein solcher Scheduler ist als ein bekannt Präventiv Planersonst ist es a Kooperative Planer.[5]
Wir unterscheiden zwischen "langfristiger Zeitplanung", "mittelfristiger Planung" und "kurzfristiger Planung" anhand, auf der Entscheidungen getroffen werden müssen.[6]
Langfristige Planung
Das Langzeitplaner, oder Eintrittsplaner, entscheidet, welche Jobs oder Prozesse in die zugelassen werden sollen Bereitete Warteschlange (im Hauptgedächtnis); Das heißt, wenn ein Versuch unternommen wird, ein Programm auszuführen, wird die Zulassung zum derzeit ausgeführten Prozesse vom langfristigen Scheduler entweder autorisiert oder verzögert. Daher schreibt dieser Scheduler vor -Intensive Prozesse sind behandelt zu werden. Der langfristige Scheduler ist für die Kontrolle des Grades der Multiprogrammierung verantwortlich.
Im Allgemeinen können die meisten Prozesse als entweder beschrieben werden I/O-gebunden oder CPU-gebunden. Ein I/O-gebundener Prozess verbringt mehr Zeit mit I/A als mit Berechnungen. Im Gegensatz dazu erzeugt ein CPU-gebundener Prozess im Gegensatz dazu, E/A-Anfragen selten zu erzeugen, wobei mehr Zeit mit Berechnungen durchgeführt wird. Es ist wichtig, dass ein langfristiger Scheduler einen guten Prozessmix aus I/O-gebundenen und CPU-gebundenen Prozessen auswählt. Wenn alle Prozesse I/O-gebunden sind, ist die Bereitschaftswarteschlange fast immer leer und der kurzfristige Scheduler hat wenig zu tun. Wenn andererseits alle Prozesse CPU-gebunden sind, ist die E/A-Warteschlange fast immer leer, Geräte werden nicht genutzt und das System wird wieder unausgeglichen. Das System mit der besten Leistung wird somit eine Kombination aus CPU-gebundenen und I/O/O-gebundenen Prozessen haben. In modernen Betriebssystemen wird dies verwendet, um sicherzustellen, dass Echtzeitprozesse genügend CPU-Zeit erhalten, um ihre Aufgaben zu erledigen.[7]
Langzeitplanung ist auch in groß angelegten Systemen wie z. Stapelverarbeitung Systeme, Computercluster, Supercomputer, und Farmen rendern. Zum Beispiel in Gleichzeitige Systeme, Coseduling von interagierenden Prozessen ist häufig erforderlich, um zu verhindern, dass sie aufgrund des Wartens aufeinander blockieren. In diesen Fällen Spezialzweck Job Scheduler Die Software wird in der Regel verwendet, um diese Funktionen zu unterstützen, zusätzlich zu den zugrunde liegenden Unterstützung für die Zulassungsplanung im Betriebssystem.
Einige Betriebssysteme ermöglichen es nur, dass neue Aufgaben hinzugefügt werden, wenn alle Echtzeit-Fristen noch eingehalten werden können. Der spezifische heuristische Algorithmus, der von einem Betriebssystem zum Akzeptieren oder Ablehnen neuer Aufgaben verwendet wird, ist die Zulassungssteuerungsmechanismus.[8]
Mittelfristige Planung
Das Mittelfristiger Scheduler Entfernt die Prozesse vorübergehend aus dem Hauptspeicher und platziert sie in Sekundärspeicher (wie z. Festplatte) oder umgekehrt, was allgemein als "Austausch" oder "Tausch ein" bezeichnet wird (auch falsch als "falsch als"Paging out "oder" Paging in "). Der mittelfristige Scheduler kann sich entscheiden, einen Prozess auszutauschen, der seit einiger Zeit nicht aktiv ist, oder einen Prozess, der eine niedrige Priorität hat, oder einen Prozess, der ist Seitenverbrauch Häufig oder ein Prozess, der eine große Menge an Speicher in Anspruch nimmt, um den Hauptspeicher für andere Prozesse zu freigeben, und den Prozess später wieder auszutauschen eine Ressource. [Stallings, 396] [Stallings, 370]
In vielen heutigen Systemen (diejenigen, die den Kartierung des virtuellen Adressraums für den Sekundärspeicher als die Swap-Datei unterstützen) kann der mittelfristige Scheduler tatsächlich die Rolle des langfristigen Schedulers ausführen, indem Binärdateien als "Verfahren" auf ihre Behandlung behandelt werden Hinrichtung. Auf diese Weise kann [Stallings, 394] auch ein Segment des Binärs benötigt werden, wenn es in Bedarf oder "faul geladen" ausgetauscht werden kann. Paging fordern.
Kurzfristige Planung
Das Kurzzeitplaner (auch bekannt als die CPU -Scheduler) entscheidet nach einer Uhr, welcher der bereitgestellten In-Memory-Prozesse (eine CPU zugewiesen) ausgeführt werden soll (eine CPU) unterbrechen, ein E/A -Interrupt, ein Betrieb Systemanruf oder eine andere Form von Signal. Daher trifft der kurzfristige Scheduler die Planungsentscheidungen viel häufiger als die langfristigen oder mittelfristigen Scheduler-eine Planungsentscheidung muss mindestens nach jedem Mal getroffen werden, und diese sind sehr kurz. Dieser Scheduler kann sein Präventivund implizieren, dass es in der Lage ist, Prozesse aus einer CPU gewaltsam zu entfernen, wenn sie beschließt, diese CPU einem anderen Prozess oder nicht vorbeugend (auch als "freiwillig" oder "kooperativ" bezeichnet) zuzuweisen. In diesem Fall ist der Scheduler nicht in der Lage Prozesse von der CPU zu "erzwingen".
Ein Präventivplaner stützt sich auf a Programmierbares Intervall -Timer die aufrufen und Interrupt Handler Das läuft herein Kernelmodus und implementiert die Planungsfunktion.
Dispatcher
Eine andere Komponente, die an der CPU-Planungsfunktion beteiligt ist, ist der Dispatcher, das das Modul ist, das die Kontrolle über die CPU für den vom kurzfristigen Scheduler ausgewählten Prozess gibt. Es empfängt die Kontrolle im Kernel -Modus als Ergebnis eines Interrupt- oder Systemaufrufs. Die Funktionen eines Dispatcher betreffen Folgendes:
- Kontextschalter, in dem der Dispatcher das rettet Zustand (auch bekannt als Kontext) des Prozess oder Faden Das lief zuvor; Der Dispatcher lädt dann den anfänglichen oder zuvor gespeicherten Zustand des neuen Prozesses.
- Wechsel in den Benutzermodus.
- Springen Sie zum richtigen Standort im Benutzerprogramm, um dieses von seinem neue Status angegebene Programm neu zu starten.
Der Dispatcher sollte so schnell wie möglich sein, da er bei jedem Prozessschalter aufgerufen wird. Während der Kontextschalter ist der Prozessor für einen Bruchteil der Zeit praktisch untätig, so dass unnötige Kontextschalter vermieden werden sollten. Die Zeit, die der Dispatcher benötigt, um einen Prozess zu stoppen und einen anderen zu starten, wird als die bezeichnet Versandlatenz.[7]: 155
Planung von Disziplinen
A Planungsdisziplin (auch genannt Planungsrichtlinie oder Planungsalgorithmus) ist ein Algorithmus, der zur Verteilung von Ressourcen unter Parteien verwendet wird, die sie gleichzeitig und asynchron anfordern. Planung von Disziplinen werden in verwendet Router (Um den Paketverkehr zu bewältigen) sowie in Betriebssysteme (Teilen CPU -Zeit unter beiden Themen und Prozesse), Laufwerke (E/A -Planung), Drucker (Spooler Druck), die meisten eingebetteten Systeme usw.
Die Hauptziele für Planungsalgorithmen sind die Minimierung Ressourcenhunger und um Fairness unter den Parteien zu gewährleisten, die die Ressourcen nutzen. Planen Sie das Problem, mit der Entscheidung zu entscheiden, welche der ausstehenden Anfragen Ressourcen zugewiesen werden sollen. Es gibt viele verschiedene Planungsalgorithmen. In diesem Abschnitt stellen wir einige von ihnen vor.
Im Paketgeschrieben Computernetzwerke und andere Statistisches Multiplexing, der Begriff von a Planungsalgorithmus wird als Alternative zu verwendet Wer zuerst kommt, mahlt zuerst Warteschlange von Datenpaketen.
Die einfachsten Planungsalgorithmen zur Best-Effort-Planung sind Round-Robin, faire Warteschlange (a max-min fair Planungsalgorithmus), Proportional-Fair-Planung und Maximaler Durchsatz. Wenn differenziert oder garantiert Servicequalität wird angeboten, im Gegensatz zur Best-Effort-Kommunikation, Gewichtete faire Warteschlange kann verwendet werden.
In fortschrittlichen Paket -Radio -drahtlosen Netzwerken wie z. HSDPA (Hochgeschwindigkeits-Downlink-Paketzugriff) 3,5 g Zellsystem, kanalabhängige Planung kann verwendet werden, um die Vorteile zu nutzen Kanalzustandsinformationen. Wenn die Kanalbedingungen günstig sind, die Durchsatz und System spektraler Effizienz kann erhöht werden. In noch fortgeschritteneren Systemen wie z. LteDie Planung wird durch kanalabhängige Pakete für Paket kombiniert Dynamische Kanalzuweisung, oder durch Zuweisung Ofdma Multikrainer oder andere Ausgleich von Frequenzdomänen Komponenten für die Benutzer, die am besten sie verwenden können.[9]
Wer zuerst kommt, mahlt zuerst

Als Erster rein, als erster raus (FIFO), auch bekannt als Wer zuerst kommt, mahlt zuerst (FCFS) ist der einfachste Planungsalgorithmus. FIFO schlangen sich einfach in der Reihenfolge an, in der sie in der Bereitschaft ankommen. Dies wird üblicherweise für a verwendet AufgabenwarteschlangeZum Beispiel, wie in diesem Abschnitt dargestellt.
- Da Kontextschalter nur bei Prozessabschlüssen auftreten und keine Umstrukturierung der Prozesswarteschlange erforderlich ist, ist die Planung von Overheads minimal.
- Der Durchsatz kann gering sein, da lange Prozesse die CPU halten können, wodurch die kurzen Prozesse lange warten können (bezeichnet als Konvoieffekt).
- Kein Hunger, weil jeder Prozess die Chance erhält, nach einer bestimmten Zeit ausgeführt zu werden.
- SeitenwechselDie Wartezeit und die Antwortzeit hängen von der Reihenfolge ihrer Ankunft ab und können aus den gleichen Gründen oben hoch sein.
- Es tritt keine Priorisierung auf, sodass dieses System Probleme mit dem Einhaltung der Prozessfristen hat.
- Die mangelnde Priorisierung bedeutet, dass es keinen Hunger gibt, solange jeder Prozess schließlich abgeschlossen ist. In einer Umgebung, in der einige Prozesse möglicherweise nicht abgeschlossen sind, kann es Hunger geben.
- Es basiert auf der Warteschlange.
Prioritätsplanung
Früheste Frist zuerst (EDF) oder am wenigsten Zeit zu gehen ist ein dynamischer Planungsalgorithmus, der in Echtzeit-Betriebssystemen verwendet wird, um Prozesse in einer vorrangigen Warteschlange zu platzieren. Immer wenn ein Planungsereignis auftritt (eine Aufgabe beendet, neue Aufgaben veröffentlicht usw.), wird die Warteschlange nach dem Prozess durchsucht, der seiner Frist am nächsten liegt, die als nächstes für die Ausführung geplant ist.
Kürzeste verbleibende Zeit zuerst
Ähnlich zu kürzester Job zuerst (SJF). Mit dieser Strategie organisiert der Scheduler Prozesse mit der am wenigsten geschätzten Verarbeitungszeit, die als nächstes in der Warteschlange steht. Dies erfordert erweiterte Kenntnisse oder Schätzungen über die Zeit, die für einen Prozess erforderlich ist.
- Wenn ein kürzerer Prozess während einer anderen Prozessausführung eintrifft, wird der aktuell ausgeführte Prozess unterbrochen (bezeichnet als Vorverfolgung), wodurch dieser Prozess in zwei separate Computerblöcke unterteilt wird. Dies schafft überschüssiger Overhead durch zusätzliche Kontextschaltanlagen. Der Scheduler muss auch jeden eingehenden Prozess an einen bestimmten Ort in der Warteschlange stellen und zusätzlichen Aufwand erstellen.
- Dieser Algorithmus ist in den meisten Szenarien für den maximalen Durchsatz ausgelegt.
- Wartezeit und Reaktionszeit steigen mit zunehmender Rechenanforderungen des Prozesses. Da die Turnaround -Zeit auf der Wartezeit plus Verarbeitungszeit basiert, werden längere Prozesse dadurch erheblich beeinflusst. Die Wartezeit ist kleiner als FIFO, da kein Prozess auf die Beendigung des längsten Prozesses warten muss.
- Es wird keine besondere Aufmerksamkeit auf die Fristen gelegt, der Programmierer kann nur versuchen, Prozesse mit Fristen so kurz wie möglich zu gestalten.
- Der Hunger ist möglich, insbesondere in einem geschäftigen System mit vielen kleinen Prozessen.
- Um diese Richtlinie zu verwenden, sollten wir mindestens zwei Prozesse unterschiedlicher Priorität haben
Priorität vorbeugende Planung
Das Betriebssystem weist jedem Prozess einen festen Prioritätsrang zu, und der Scheduler arrangiert die Prozesse in der Ready -Warteschlange in der Reihenfolge ihrer Priorität. Prozesse mit niedrigerer Priorität werden durch eingehende Prozesse mit höherer Priorität unterbrochen.
- Overhead ist weder minimal noch signifikant.
- FPPS hat keinen besonderen Vorteil in Bezug auf den Durchsatz gegenüber der FIFO -Planung.
- Wenn die Anzahl der Rankings begrenzt ist, kann sie als Sammlung von FIFO -Warteschlangen charakterisiert werden, eine für jedes Prioritätsranking. Prozesse in Warteschlangen mit niedrigerer Priorität werden nur ausgewählt, wenn alle Warteschlangen der höheren Priorität leer sind.
- Wartezeit und Reaktionszeit hängen von der Priorität des Prozesses ab. Prozesse mit höherer Priorität haben kleinere Warten- und Reaktionszeiten.
- Fristen können durch Verfahren mit Fristen eine höhere Priorität eingehalten werden.
- Der Hunger von Prozessen mit niedrigerer Priorität ist mit einer großen Anzahl von Hochprioritätsprozessen für die CPU-Zeit möglich.
Round-Robin-Planung
Der Scheduler weist eine feste Zeiteinheit pro Prozess zu und radelt sie durch. Wenn der Prozess innerhalb dieser Zeitklappe abgeschlossen wird, wird er ansonsten beendet, da er nach einer Chance für alle anderen Prozesse verschoben wird.
- Die RR -Planung beinhaltet umfangreiche Overheads, insbesondere mit einer kleinen Zeiteinheit.
- Der ausgewogene Durchsatz zwischen FCFS/ FIFO und SJF/ SRTF, kürzere Jobs sind schneller abgeschlossen als in FIFO und längere Prozesse werden schneller abgeschlossen als in SJF.
- Eine gute durchschnittliche Reaktionszeit, die Wartezeit hängt von der Anzahl der Prozesse ab und nicht von der durchschnittlichen Prozesslänge.
- Aufgrund hoher Wartezeiten werden Termine in einem reinen RR -System selten eingehalten.
- Hunger kann niemals auftreten, da keine Priorität gegeben wird. Die Zuordnung der Zeiteinheit basiert auf der Ankunftszeit für die Prozessankunft, ähnlich wie bei FIFO.
- Wenn die Zeitklappe groß ist, wird es zu FCFS /FIFO oder wenn es kurz ist, wird es zu SJF /SRTF.
Multilevel -Warteschlangenplanung
Dies wird für Situationen verwendet, in denen Prozesse leicht in verschiedene Gruppen unterteilt werden. Beispielsweise wird eine gemeinsame Aufteilung zwischen den Vordergrundprozessen (interaktive) Prozesse (Batch) -Prozesse (Batch) durchgeführt. Diese beiden Arten von Prozessen haben unterschiedliche Anforderungen an die Reaktionszeit und können daher unterschiedliche Planungsbedürfnisse haben. Es ist sehr nützlich für geteilte Erinnerung Probleme.
Arbeitsplaner
A Arbeiternungsscheduler ist ein Scheduler, der immer versucht, die geplanten Ressourcen beschäftigt zu halten, wenn eingereichte Jobs bereit sind, um geplant zu sein. Im Gegensatz dazu ist ein nicht berufspendender Scheduler ein Scheduler, der in einigen Fällen die geplanten Ressourcen trotz der Anwesenheit von Jobs für geplant bereit lassen.
Planungsoptimierungsprobleme
Es gibt mehrere Planungsprobleme, bei denen das Ziel darin besteht Makespan ist minimiert:
- Job Shop Planing- es gibt n Jobs und m identische Stationen. Jeder Job sollte auf einer einzigen Maschine ausgeführt werden. Dies wird normalerweise als Online -Problem angesehen.
- Open-Shop-Planung- es gibt n Jobs und m Verschiedene Stationen. Jeder Job sollte einige Zeit an jeder Station in einer kostenlosen Reihenfolge verbringen.
- Flow -Shop -Planung- es gibt n Jobs und m Verschiedene Stationen. Jeder Job sollte einige Zeit an jeder Station in einer festgelegten Reihenfolge verbringen.
Handplanung
Eine sehr häufige Methode in eingebetteten Systemen besteht darin, Jobs manuell zu planen. Dies kann beispielsweise zeitlich multiplexer Weise durchgeführt werden. Manchmal ist der Kernel in drei oder mehr Teile unterteilt: manuelle Planung, Präventiv und Interrupt -Ebene. Genaue Methoden zur Planung von Arbeitsplätzen sind häufig proprietär.
- Keine Ressourcenhungerprobleme
- Sehr hohe Vorhersehbarkeit; ermöglicht die Implementierung harter Echtzeitsysteme
- Fast kein Overhead
- Für alle Anwendungen ist möglicherweise nicht optimal
- Die Wirksamkeit hängt vollständig von der Umsetzung ab
Auswahl eines Planungsalgorithmus
Beim Entwerfen eines Betriebssystems muss ein Programmierer prüfen, welcher Planungsalgorithmus am besten für die Verwendung des Systems erbracht wird. Es gibt keinen universellen "besten" Planungsalgorithmus, und viele Betriebssysteme verwenden erweiterte oder Kombinationen der oben genannten Planungsalgorithmen.
Zum Beispiel, Windows NT/Xp/vista verwendet a Multilevel Feedback -Warteschlange, Eine Kombination aus Präventivplanung mit fester Priorität, Round-Robin und First In, First Out-Algorithmen. In diesem System können Threads die Priorität dynamisch erhöhen oder verringern, je nachdem, ob es bereits gewartet wurde oder ob es ausgiebig gewartet hat. Jede Prioritätsstufe wird durch ihre eigene Warteschlange dargestellt, mit Round-Robin-Planung Unter den Hochprioritätsfäden und FIFO unter den unteren Prioritäten. In diesem Sinne ist die Reaktionszeit für die meisten Threads kurz, und kurze, aber kritische Systemthreads werden sehr schnell abgeschlossen. Da Threads nur eine Zeiteinheit des Round-Robins in der Warteschlange mit höchster Priorität verwenden können, kann Hunger ein Problem für längere Gewinde mit hoher Priorität sein.
Betriebssystemprozessplaner -Implementierungen
Der verwendete Algorithmus kann so einfach sein wie Round-Robin in denen jeder Prozess die gleiche Zeit (zum Beispiel 1 ms, normalerweise zwischen 1 ms und 100 ms) in einer Radsportliste erhält. Verarbeiten Sie also A für 1 ms, verarbeiten Sie B und verarbeiten Sie dann C, dann zurück zum Prozess A.
Fortgeschrittene Algorithmen berücksichtigen die Priorität des Prozesses oder die Bedeutung des Prozesses. Dies ermöglicht es einigen Prozessen, mehr Zeit zu verwenden als andere Prozesse. Der Kernel verwendet immer alle Ressourcen, die er benötigt, um die ordnungsgemäße Funktion des Systems zu gewährleisten, und kann daher eine unendliche Priorität haben. Im SMP Systeme, Prozessoraffinität Es wird in Betracht gezogen, die Gesamtsystemleistung zu erhöhen, auch wenn ein Prozess selbst langsamer läuft. Dies verbessert die Leistung im Allgemeinen durch Reduzierung Cache -Thrashing.
OS/360 und Nachfolger
IBM OS/360 war mit drei verschiedenen Schedulern erhältlich. Die Unterschiede waren so, dass die Varianten häufig als drei verschiedene Betriebssysteme angesehen wurden:
- Das Einzelner sequentieller Scheduler Option, auch bekannt als die Primärkontrollprogramm (PCP) bereitete eine sequentielle Ausführung eines einzelnen Jobs von Jobs.
- Das Mehrfacher sequentieller Scheduler Option, bekannt als Multiprogrammierung mit einer festen Anzahl von Aufgaben (MFT) Bereitstellung von mehreren gleichzeitigen Arbeitsplätzen. Die Ausführung wurde durch eine Priorität geleitet, die für jeden Stream einen Ausfall hatte oder für jeden Job separat angefordert werden konnte. MFT Version II fügte Subtasks (Threads) hinzu, die auf einer Priorität ausgeführt wurden, die auf dem des übergeordneten Jobs basiert. Jeder Jobstrom definierte die maximale Menge an Speicher, die von jedem Job in diesem Stream verwendet werden könnte.
- Das Mehrere Prioritätsplaner Option, oder Multiprogrammierung mit einer variablen Anzahl von Aufgaben (MVT), von Anfang an untergeblähte Unteraufgaben; Jeder Job forderte die Priorität und den Speicher an, die er vor der Ausführung erforderte.
Spätere virtuelle Speicherversionen von MVS fügten a hinzu Workload Manager Feature an den Scheduler, der Prozessorressourcen gemäß einem durch die Installation definierten aufwändigen Schema plant.
Fenster
Sehr früh MS-DOS Und Microsoft Windows-Systeme waren nicht-multititasking und zeigten daher keinen Scheduler. Windows 3.1x verwendete einen nicht preemptiven Scheduler, was bedeutet, dass es keine Programme unterbrach. Es stützte sich auf das Programm, um dem Betriebssystem zu beenden oder zu sagen, dass es den Prozessor nicht benötigte, damit er zu einem anderen Prozess übergehen konnte. Dies wird normalerweise als kooperatives Multitasking bezeichnet. Windows 95 führte einen rudimentären präventiven Scheduler ein; Für die Legacy -Unterstützung entschied sich jedoch, 16 -Bit -Anwendungen ohne Vorbereitung auszuführen.[10]
Windows NT-Basierte Betriebssysteme verwenden eine mehrstufige Feedback -Warteschlange. 32 Prioritätsniveaus werden definiert, 0 bis 31, wobei die Prioritäten 0 bis 15 "normale" Prioritäten und Prioritäten 16 bis 31 weiche Echtzeit-Prioritäten sind und die Berechtigungen zuordnen müssen. 0 ist für das Betriebssystem reserviert. Benutzeroberflächen und APIs arbeiten mit Prioritätsklassen für den Prozess und die Threads im Prozess, die dann vom System in die absolute Prioritätsebene kombiniert werden.
Der Kernel kann die Prioritätsniveau eines Threads je nach I/O- und CPU -Verwendung und ob er interaktiv ist (d. H. Akzeptiert und reagiert auf Eingaben des Menschen), wodurch die Priorität interaktiver und i/o begrenzter Prozesse erhöht wird und das von den von den von I/O gesenkt wird und das von den von gesenkt wird CPU gebundene Prozesse, um die Reaktionsfähigkeit interaktiver Anwendungen zu erhöhen.[11] Der Scheduler wurde in geändert Windows Vista Um das zu verwenden Zyklusregister von modernen Prozessoren, um genau zu verfolgen, wie viele CPU-Zyklen ein Faden ausgeführt hat, anstatt nur eine Intervall-Timer-Interruptroutine zu verwenden.[12] Vista verwendet auch einen Prioritätsplaner für die E/A -Warteschlange, sodass die Festplattenbefragen und andere solche Programme die Vordergrundvorgänge nicht beeinträchtigen.[13]
Klassiker Mac OS und MacOS
Mac OS 9 verwendet eine kooperative Planung für Threads, bei denen ein Prozess mehrere kooperative Threads steuert, und bietet außerdem die präventive Planung für Multiprozessingaufgaben. Die Kernel -Zeitpläne multiProcessing -Aufgaben mit einem präventiven Planungsalgorithmus. Alle Prozesse Manager -Prozesse, die in einer speziellen Multiprozessing -Aufgabe ausgeführt werden, namens "blaue Aufgabe". Diese Prozesse werden kooperativ mit a geplant Round-Robin-Planung Algorithmus; Ein Prozess ergibt die Kontrolle des Prozessors für einen anderen Prozess, indem eine Blockierungsfunktion explizit aufgerufen wird wie z. WaitNexeVent
. Jeder Prozess hat eine eigene Kopie des Thread -Managers, der die Threads kooperativ plant. Ein Thread ergibt die Steuerung des Prozessors zu einem anderen Thread, indem Sie aufrufen RenditeToanythread
oder RenditeTotHhread
.[14]
MacOS verwendet eine mehrstufige Feedback-Warteschlange mit vier Prioritätsbändern für Threads-normale, System hohe Priorität, nur Kernelmodus und Echtzeit.[15] Themen sind präventiv geplant; macOS unterstützt auch kooperativ geplante Threads bei der Implementierung des Thread Managers in Kohlenstoff.[14]
AIX
In AIX Version 4 gibt es drei mögliche Werte für die Thread -Planungsrichtlinie:
- Erstens in, zuerst heraus: Sobald ein Thread mit dieser Richtlinie geplant ist, wird er abgeschlossen, wenn er nicht blockiert ist, er liefert freiwillig die Kontrolle über die CPU, oder ein Thread mit höherer Priorität wird versendet. Nur Festprioritätsthreads können eine FIFO-Planungsrichtlinie haben.
- Round Robin: Dies ähnelt dem AIX Version 3 Scheduler Round-Robin-Schema basierend auf 10 ms Zeitscheiben. Wenn ein RR -Faden am Ende der Zeitscheibe die Kontrolle hat, bewegt er sich zum Schwanz der Warteschlange der Versandfäden seiner Priorität. Nur Festprioritätsthreads können eine Round-Robin-Planungsrichtlinie haben.
- Andere: Diese Richtlinie wird von POSIX1003.4A als implementierende definiert definiert. In AIX Version 4 wird diese Richtlinie als gleichwertig mit RR entspricht, mit der Ausnahme, dass sie für Threads mit nicht fixiertem Priorität gilt. Die Neuberechnung des Prioritätswerts des laufenden Threads bei jedem Takt -Interrupt bedeutet, dass ein Thread die Kontrolle verlieren kann, da sein Prioritätswert über dem eines anderen Versandfadens gestiegen ist. Dies ist das Verhalten von AIX Version 3.
Themen sind in erster Linie von Interesse für Anwendungen, die derzeit aus mehreren asynchronen Prozessen bestehen. Diese Anwendungen können dem System eine leichtere Belastung auferlegen, wenn sie in eine Multithread -Struktur konvertiert werden.
AIX 5 implementiert die folgenden Planungsrichtlinien: FIFO, Round Robin und einen fairen Rund -Robin. Die FIFO -Richtlinie hat drei verschiedene Implementierungen: FIFO, FIFO2 und FIFO3. Die Round Robin -Richtlinie heißt pled_rr in AIX und der Fair Round Robin heißt Sched_Other.[16]
Linux

Linux 2.4
Im Linux 2.4, an O (n) Scheduler mit einer Multilevel Feedback -Warteschlange mit Prioritätsniveaus von 0 bis 140 wurden verwendet; 0–99 sind für Echtzeitaufgaben reserviert und 100–140 werden berücksichtigt Hübsch Aufgabenniveaus. Bei Echtzeitaufgaben betrug das Zeitquantum für Schaltprozesse ungefähr 200 ms und für schöne Aufgaben ungefähr 10 ms. Der Scheduler durchlief die Laufen Sie Warteschlange Von allen Bereitschaftsprozessen werden die höchsten Prioritätsprozesse an erster Stelle gehen und ihre Zeitscheiben durchlaufen, wonach sie in eine abgelaufene Warteschlange gestellt werden. Wenn die aktive Warteschlange leer ist, wird die abgelaufene Warteschlange zur aktiven Warteschlange und umgekehrt.
Ein Enterprise jedoch Linux -Verteilungen wie zum Beispiel SUSE Linux Enterprise Server ersetzte diesen Scheduler durch ein Backport der O (1) Scheduler (das wurde von unterhalten von Alan Cox In seiner Linux 2.4-AC-Kernelserie) zu dem von der Verteilung verwendeten Linux 2.4-Kernel.
Linux 2.6.0 bis Linux 2.6.22
In den Versionen 2.6.0 bis 2.6.22 verwendete der Kernel eine O (1) Scheduler entwickelt von Ingo Molnar und viele andere Kernelentwickler während der Linux 2.5 -Entwicklung. Für viele Kernel im Zeitrahmen, Con Kolivas entwickelte Patch -Sets, die die Interaktivität mit diesem Scheduler verbesserten oder sogar durch seine eigenen Scheduler ersetzt.
Seit Linux 2.6.23
Die Arbeit von Con Kolivas, am deutlichsten seine Umsetzung von "Faire Planung"Named" rotierende Treppenschlussfrist ", inspirierte Ingo Molnár, die zu entwickeln Ganz fairer Zeitplaner als Ersatz für das frühere O (1) Schedulerkolivas in seiner Ankündigung gutgeschrieben.[17] CFS ist die erste Implementierung einer fairen Warteschlange Prozessplaner weit verbreitet in einem allgemeinen Betriebssystem.[18]
Das Ganz fairer Zeitplaner (CFS) verwendet einen gut untersuchten, klassischen Planungsalgorithmus namens faire Warteschlange ursprünglich erfunden für Paketnetzwerke. Faire Warteschlange war zuvor auf die CPU -Planung unter dem Namen angewendet worden Strid -Planung. Der faire Warteschlangen -CFS -Scheduler hat eine Planungskomplexität von , wo N ist die Anzahl der Aufgaben in der RunQueue. Die Auswahl einer Aufgabe kann in ständiger Zeit erledigt werden, aber die Rückversion einer Aufgabe, nachdem sie ausgeführt wurde Operationen, weil die Laufen Sie Warteschlange wird als implementiert Rot -Schwarz -Baum.
Das Brain Fuck SchedulerEbenfalls von Con Kolivas erstellt, ist eine Alternative zum CFS.
Freebsd
Freebsd Verwendet eine mehrstufige Feedback -Warteschlange mit Prioritäten von 0 bis 255. 0–63 sind für Interrupts reserviert, 64–127 für die obere Hälfte des Kernels, 128–159 für Echtzeit-Benutzer-Threads, 160–223 für zeitübertragende Benutzer-Threads und 224–255 für müßige Benutzer-Threads. Wie Linux verwendet es auch das Setup der aktiven Warteschlange, hat aber auch eine Leerlaufwarteschlange.[19]
Netbsd
Netbsd Verwendet eine mehrstufige Feedback -Warteschlange mit Prioritäten von 0–223. 0–63 sind für zeitgebreitete Threads reserviert (Standard, Sched_Other-Richtlinie), 64–95 für Benutzer-Threads, die eingegeben wurden Kernelraum, 96-128 für Kernel-Threads, 128–191 für Benutzer in Echtzeit-Threads (plant_fifo und plan_rr-Richtlinien) und 192–223 für Software unterbricht.
Solaris
Solaris Verwendet eine mehrstufige Feedback-Warteschlange mit Prioritäten zwischen 0 und 169. Prioritäten 0–59 sind für zeitgebreitete Threads, 60–99 für Systemfäden, 100–159 für Echtzeit-Threads und 160–169 für Interrupts mit niedriger Priorität reserviert. Im Gegensatz zu Linux,,[19] Wenn ein Prozess mit seinem Zeitquantum durchgeführt wird, wird eine neue Priorität gegeben und in die Warteschlange zurückgefügt. Solaris 9 führte zwei neue Planungsklassen ein, nämlich feste Prioritätsklassen- und Fair Share -Klasse. Die Themen mit fester Priorität haben den gleichen Prioritätsbereich wie der der Zeitsharing-Klasse, ihre Prioritäten sind jedoch nicht dynamisch eingestellt. Die faire Planungsklasse verwendet CPU Anteile Threads für Planungsentscheidungen priorisieren. CPU -Aktien geben den Anspruch auf CPU -Ressourcen an. Sie werden einer Reihe von Prozessen zugeordnet, die gemeinsam als Projekt bezeichnet werden.[7]
Zusammenfassung
Betriebssystem | Präsentation | Algorithmus |
---|---|---|
Amiga OS | Ja | Priorisiert Round-Robin-Planung |
Freebsd | Ja | Multilevel Feedback -Warteschlange |
Linux Kernel vor 2.6.0 | Ja | Multilevel Feedback -Warteschlange |
Linux Kernel 2.6.0–2.6.23 | Ja | O (1) Scheduler |
Linux -Kernel nach 2.6.23 | Ja | Ganz fairer Zeitplaner |
Klassischer Mac OS vor 9 | Keiner | Genossenschaftsplaner |
Mac OS 9 | Etwas | Präventivplaner für MP -Aufgaben und kooperativ für Prozesse und Fäden |
Mac OS | Ja | Multilevel Feedback -Warteschlange |
Netbsd | Ja | Multilevel Feedback -Warteschlange |
Solaris | Ja | Multilevel Feedback -Warteschlange |
Windows 3.1x | Keiner | Genossenschaftsplaner |
Windows 95, 98, Mir | Halb | Präventivplaner für 32-Bit-Prozesse und kooperativ für 16-Bit-Prozesse |
Windows NT (einschließlich 2000, XP, Vista, 7 und Server) | Ja | Multilevel Feedback -Warteschlange |
Siehe auch
- Aktivitätsauswahlproblem
- Alterung (Planung)
- Atropos Scheduler
- Automatisierte Planung und Planung
- Cyclic Executive
- Dynamische Prioritätsplanung
- Vordergrund Hintergrund
- Interruptible Betriebssystem
- Zeitplanung am wenigsten Slack
- Lotterieplanung
- Prioritätsinversion
- Prozesszustände
- Warteschlangentheorie
- Rate-monotonische Planung
- Ressourcen-Task-Netzwerk
- Planung (Produktionsprozesse)
- Stochastische Planung
- Zeit-Utilitätsfunktion
Anmerkungen
- ^ C. L., Liu; James W., Layland (Januar 1973). "Planung von Algorithmen zur Multiprogrammierung in einer Umgebung mit schwerer Zeit". Journal of the ACM. ACM. 20 (1): 46–61. doi:10.1145/321738.321743. S2CID 207669821.
Wir definieren die Antwortzeit einer Anfrage nach einer bestimmten Aufgabe, die Zeitspanne zwischen der Anfrage und dem Ende der Antwort auf diese Anfrage zu sein.
- ^ Kleinrock, Leonard (1976). Warteschlangensysteme, Vol. 2: Computeranwendungen (1 ed.). Wiley-Interscience. p.171. ISBN 047149111x.
Für einen Kunden, der X Sec des Dienstes benötigt, entspricht seine Reaktionszeit seiner Servicesteit x plus seiner Wartezeit.
- ^ Feitelson, Dror G. (2015). Arbeitsbelastungsmodellierung für die Leistungsbewertung von Computersystemen. Cambridge University Press. Abschnitt 8.4 (Seite 422) in Version 1.03 des frei verfügbaren Manuskripts. ISBN 9781107078239. Abgerufen 2015-10-17.
Wenn wir die Zeit bezeichnen, in der ein Job in der Warteschlange von t wartetwund die Zeit, die es tatsächlich von t läuftrdann ist die Antwortzeit r = tw + tr.
- ^ Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2012). Betriebssystemkonzepte (9 ed.). Wiley Publishing. p. 187. ISBN 978-0470128725.
In einem interaktiven System ist die Turnaround -Zeit möglicherweise nicht das beste Kriterium. Oft kann ein Prozess ziemlich früh eine Ausgabe erzeugen und neue Ergebnisse berechnen, während frühere Ergebnisse an den Benutzer ausgegeben werden. Eine weitere Maßnahme ist daher die Zeit der Einreichung einer Anforderung, bis die erste Antwort erstellt wurde. Diese Maßnahme, die als Antwortzeit bezeichnet wird, ist die Zeit, die benötigt wird, um mit der Reaktion zu beginnen, nicht die Zeit, die für die Ausgabe der Antwort benötigt wird.
- ^ Paul Krzyzanowski (2014-02-19). "Prozessplanung: Wer kann als nächstes rennen?". cs.Rutgers.edu. Abgerufen 2015-01-11.
- ^ Raphael Finkel."Ein Betriebssystem vade mecum". Prentice Hall. 1988. "Kapitel 2: Zeitmanagement". p. 27.
- ^ a b c Abraham SilberschatzPeter Baer Galvin und Greg Gagne (2013). Betriebssystemkonzepte. Vol. 9. John Wiley & Sons, Inc. ISBN 978-1-118-06333-0.
{{}}
: CS1 Wartung: Verwendet Autorenparameter (Link) - ^ Robert Kroeger (2004)."Zulassungskontrolle für unabhängig verfasste Echtzeitanwendungen". UWSPACE.http://hdl.handle.net/10012/1170 . Abschnitt "2.6 Zulassungskontrolle". p. 33.
- ^ Guowang Miao; Jens Zander; Ki gewann gesungen; Ben Slimane (2016). Grundlagen mobiler Datennetzwerke. Cambridge University Press. ISBN 978-1107143210.
- ^ Frühe Fenster Bei der Wayback -Maschine (Archivindex)
- ^ Sriram Krishnan. "Eine Geschichte von zwei Schedulern Windows NT und Windows CE". Archiviert von das Original am 22. Juli 2012.
- ^ "Windows Administration: Im Windows Vista -Kernel: Teil 1". Technet.microsoft.com. 2016-11-14. Abgerufen 2016-12-09.
- ^ "Archivierte Kopie". blog.gabefrost.com. Archiviert von das Original am 19. Februar 2008. Abgerufen 15. Januar 2022.
{{}}
: CS1 Wartung: Archiviertes Kopie als Titel (Link) - ^ a b "Technischer Hinweis TN2028: Threading -Architekturen". Entwickler.apple.com. Abgerufen 2019-01-15.
- ^ "Mach -Planung und Fadenschnittstellen". Entwickler.apple.com. Abgerufen 2019-01-15.
- ^ [1] Archiviert 2011-08-11 bei der Wayback -Maschine
- ^ Molnár, Ingo (2007-04-13). "[Patch] Modular Scheduler Core und völlig fairer Scheduler [CFS]". Linux Kernel (Mailingliste).
- ^ Tong li; Dan Beugberger; Scott Hahn. "Effiziente und skalierbare Multiprozessor-Fair-Planung mit verteilten gewichteten Round-Robin" (PDF). Happyli.org. Abgerufen 2016-12-09.
- ^ a b "Vergleich von Solaris, Linux und FreeBSD -Kerneln" (PDF). Archiviert von das Original (PDF) Am 7. August 2008.
Verweise
- Błażewicz, Jacek; Ecker, K.H.; Pesch, E.; Schmidt, G.; Weglarz, J. (2001). Planen von Computer- und Herstellungsprozessen (2 ed.). Berlin [U.A.]: Springer. ISBN 3-540-41931-4.
- Stallings, William (2004). Betriebssysteme Interna und Designprinzipien (Viertes Ausgabe). Prentice Hall. ISBN 0-13-031999-6.
- Informationen zum Linux 2.6 O (1) -Scheduler
Weitere Lektüre
- Betriebssysteme: drei einfache Stücke Von Remzi H. Arpaci-Dusseau und Andrea C. Arpaci-Dusseau. Arpaci-Dusseau Books, 2014. Relevante Kapitel: Planung: Einführung Multi-Level-Feedback-Warteschlange Proportional-Share-Planung Multiprozessorplanung
- Kurze Diskussion über Jobplanungsalgorithmen
- Verständnis des Linux -Kernels: Kapitel 10 Prozessplanung
- Kerneltrap: Linux -Kernel -Scheduler -Artikel
- AIX -CPU -Überwachung und -abstimmung
- Josh AAS 'Einführung in die Linux 2.6.8.1 CPU -Scheduler -Implementierung
- Peter Brucker, Sigrid Knust. Komplexitätsergebnisse für die Planungsprobleme [2]
- Torsche -Planungs -Toolbox für MATLAB ist eine Toolbox mit Planungs- und Graph -Algorithmen.
- Eine Umfrage zur Paketplanung von Mobilfunknetzen
- Großer Clustermanagement bei Google with Borg