Prozessorzuteilung (Scheduling) Vorlesung Betriebssysteme I I Thema 7: Zuteilung des Prozessors Robert Baumgartl 11. Januar 2016 = Beantwortung der Frage: „Welche Aktivität soll zu einem bestimmten Zeitpunkt abgearbeitet werden (und für wie lange)?“ I Komponente im Betriebssystem: der Scheduler (Planer) I Verfahren zur Ermittlung einer Abarbeitungsplans (Schedule) 2 / 33 1 / 33 Typische Zielgrößen Planung anderer Ressourcen Je nach betrachteter Systemklasse (z. B. Batchsysteme, Interaktive Systeme, Echtzeitsysteme) existieren verschiedene zu optimierende Parameter: I mittlere Reaktionszeit aller Prozesse I mittlere Verweilzeit aller Prozesse (turnaround time) I maximale CPU-Ausnutzung I maximale Anzahl gleichzeitiger Datenströme I Garantie einer maximalen Reaktionszeit I Fairness: n Prozesse → jeder 1/n der Prozessorzeit I Quality-of-Service (QoS): „Jeder bekommt so viel, wie er bezahlt hat.“ I Ausschluss des Verhungerns einzelner Prozesse Außer dem Prozessor können (müssen aber nicht) die folgenden Ressourcen geplant werden: I Hauptspeicher, I Aufträge an den Massenspeicher, I Kommunikationsbandbreite, I Interrupts I ... Beispiel: Linux besitzt einen sog. I/O-Scheduler, der Festplattenaufträge plant (d. h. , ggf. umsortiert). 3 / 33 4 / 33 Beispiel: Schedulingebenen in einem Batch-System Off-Line- vs. On-Line-Verfahren Off-Line CPU CPU Scheduler I komplette Ermittlung des Abarbeitungsplans vor Inbetriebnahme des Systems I Zur Laufzeit des Systems wird der vorbereitete Plan abgearbeitet (keine Entscheidungen mehr notwendig). I inflexibel I sehr hohe Auslastung möglich I Startzeitpunkte, Ausführungszeiten, Abhängigkeiten aller Aktivitäten müssen a priori bekannt sein. I z. B. bei autonomen oder Echtzeit-Systemen I situationsspezifische Pläne möglich, System unterscheidet mehrere Modi Arriving Job Input Queue Haupt− speicher Admission Scheduler Disk Memory Scheduler Quelle: Andrew Tanenbaum, Modern Operating Systems. 2000, S. 141 5 / 33 6 / 33 1 Off-Line- vs. On-Line-Verfahren Beispiel für Off-Line-Scheduling Ein (nicht näher spezifiziertes) Rechensystem bestehe aus 3 Prozessen, die wiederum aus den folgenden unabhängigen Teilprozessen bestehen (benötigte Rechenzeit in Klammern): On-Line I Auswahl des jeweils nächsten abzuarbeitenden Prozesses erfolgt zur Laufzeit des Systems. I Flexibel: System kann auf Änderungen verschiedener Parameter, Umwelteinflüsse, Nutzeranforderungen reagieren I keine Zeit für langwierige Auswahlverfahren → Kompromiss zwischen Optimalität des ausgesuchten Prozesses und Dauer für die Entscheidung notwendig. P1 : { p11 (3), p12 (2), p13 (2), p14 (5) } P2 : { p21 (5), p22 (7) } P3 : { p31 (5), p32 (2) } Außerdem bestehen die folgenden expliziten zeitlichen Abhängigkeiten zwischen den Teilprozessen: p21 vor p12 , p12 vor p22 , p13 vor p31 , p14 vor p32 , p22 vor p32 . Typische interaktive Betriebssysteme wie Windows oder Linux planen on-line. Darüberhinaus müssen die Teilprozesse ein- und desselben Prozesses hintereinander liegen. 7 / 33 8 / 33 Präzedenzgraph Ableitung eines Schedules (off-line) Die zeitlichen Abhängigkeiten veranschaulicht man am besten in einem Präzedenzgraphen: I einen Knoten für jeden Teilprozess I eine Kante zwischen zwei Knoten genau dann, wenn der erste Knoten beendet sein muss, bevor der zweite gestartet werden darf p11 1. Bildung der Bereit-Menge B (enthält alle Prozesse, die abgearbeitet werden können) 2. Auswahl von n Prozessen aus B (n ist die Prozessoranzahl, im einfachsten Falle also 1) nach vorgegebenem Kriterium (z. B. „den kürzesten Prozess zuerst“) p14 p13 3 Verfahren: 5 2 p12 3. Planung der ausgewählten Prozesse für bestimmte Zeitspanne (im einfachsten Falle: für eine Zeiteinheit) p31 2 5 p21 p22 5 p32 4. Falls noch nicht alle Prozesse geplant sind → Goto 1 2 5. Stop 7 Abbildung: Präzedenzgraph des Beispielprozesssystems 9 / 33 10 / 33 Anwendung auf Beispieltaskmenge I I I Resultierender Schedule n = 2 (z. B. Dualcore-Prozessor) Auswahl des jeweils kürzesten Prozesses (Shortest Job Next) Abarbeitung ohne Unterbrechung, wenn einmal gestartet (Run-to-Completion) Zeit 0 3 5 7 9 14 19 B p11 , p21 (p21 ) p12 p13 , p22 p14 , p31 p31 p32 p 11 P1 p 12 0 2 p 14 p 13 p 31 p 32 p 22 p 21 P2 4 6 8 10 12 14 16 18 20 22 Abbildung: Off-Line Schedule für Beispieltaskmenge und ohne Unterbrechungen Auswahl p11 , p21 (p21 ) p12 p13 , p22 p14 p31 p31 I Resultat: Gantt-Diagramm (benannt nach dem Unternehmensberater (!) Henry L. Gantt) I Komplettierung des letzten Teilprozesses zu t = 21 I Prozessoren nicht voll ausgelastet (idle time); Ursache: Präzedenzen zwischen Teilprozessen Tabelle: Schedulingzeitpunkte für Beispiel 11 / 33 12 / 33 2 Zeitgesteuertes Scheduling Time Division Multiple Access I alle Abläufe im System erfolgen in festem zeitlichen Rahmen, periodisch I keine Interrupts → keine unvorhergesehenen Aktivitäten I Prinzip: I Übertragungszeit wird in (unendlich viele) Perioden fester Länge aufgeteilt I innerhalb jeder Periode erhält jeder (potentielle) Kommunikationsteilnehmer 1/n der Periodenlänge, einen sog. Slot I in seinem Slot kann jeder senden oder nicht I → keine Kollisionen möglich Kommunikation mit externe Komponenten: Abfragen (Polling) I typisch für autonome und Echtzeitsysteme I Nutzung von off-line ermittelten Schedules, zwischen denen umgeschaltet werden kann (Moduswechsel) I Beispiel: Medienzugriffsverfahren Time Division Multiple Access (TDMA) Prozess sendet nicht. ... 0 1 2 3 4 5 6 7 t Slot Periode 14 / 33 13 / 33 Ereignisgesteuertes Scheduling Was passiert denn eigentlich beim Interrupt? Prozess Prinzip: I System reagiert auf Einflüsse von außen (Interrupts) I Aktivitäten werden als Reaktion auf Interrupts bereit I prinzipiell keine Garantie von Ausführungszeiten möglich, da Auftrittszeitpunkte von Interrupts nicht vorhersehbar I typisch für interaktive Systeme I Beispiel: Grafische Benutzeroberflächen (Ereignisse: Mausbewegung, Klick, Tastendruck, aber auch Interrupt durch die Netzwerkkarte) Instruktion n Instruktion 1 Instruktion n+1 Instruktion 2 Interruptservice− Routine (ISR) Interrupt Instruktion n+2 IRET Abbildung: Ablauf einer Interruptbehandlung (vereinfacht) I Interrupts sind asynchron zum Programmablauf I Quellen: Geräte (I/O), Programm, Betriebssystem 15 / 33 16 / 33 Interrupt: Ablauf in der CPU Hardware Device controller or other system hardware issues an interrupt Processor finishes execution of current instruction Schedulingzeitpunkt beim On-Line Scheduling Software Unterbrechung eines aktiven Prozesses: I durch das BS, (prinzipiell) jederzeit (präemptives Multitasking): Save remainder of process state information I I Process interrupt Processor signals acknowledgment of interrupt Processor pushes PSW and PC onto control stack Processor loads new PC value based on interrupt I wenn ein Prozess blockiert (z. B. an Ressource), wenn ein Prozess bereit wird (z. B. als Reaktion auf einen Interrupt oder durch eine Ressourcenfreigabe), wenn ein Prozess endet. Restore process state information I durch das BS, jedoch nur an bestimmten Stellen, sogenannten Preemption Points Restore old PSW and PC I freiwillig, an bestimmten Stellen, z. B. Systemruf (kooperatives Multitasking) I nach Komplettierung einer Aktivität (run-to-completion) (William Stallings: Operating Systems. 6th ed., Pearson, 2009) Figure 1.10 Simple Interrupt Processing 17 / 33 18 / 33 3 Prioritäten und Priorisierung I Implizite Prioritäten: ein bestimmter Parameter jedes Prozesses wird „zweckentfremdet“ zur Bestimmung der Priorität herangezogen. Beispiele: (gewollt) unfair, Prozesse besitzen unterschiedliche Wichtigkeit I einfachste Möglichkeit: Fixed External Priorities (FEP)) I d. h. , jeder Prozess erhält vor der Laufzeit des Systems einen Parameter fest zugeordnet, der seine Wichtigkeit ausdrückt, seine Priorität I Prioritäten zum zweiten zur Laufzeit wird stets der höchstpriorisierte unter allen bereiten Prozessen ausgewählt I Länge des Jobs I verbleibende Abarbeitungszeit I Zeit seit letzter Aktivierung I Deadline (Zeit bis zur unbedingten Komplettierung) 19 / 33 20 / 33 Statische und dynamische Prioritäten Uniprozessor- vs. Multiprozessor-Scheduling I Statisch: Priorität eines Prozesses ist konstant. I einfacher Scheduler I gut zu analysieren I nicht besonders flexibel (was ist, wenn sich die Wichtigkeit eines Prozesses ändert?) I I I Dynamisch: Priorität eines Prozesses ändert sich mit der Zeit. I periodische Neuberechnung (Aufwand!) I erlaubt situationsspezifische Anpassungen I schwieriger zu analysieren zusätzlich nötige Entscheidung, wo Prozess abgearbeitet wird Ziel: Load Balancing zu starr: möglicherweise schlechte Ausnutzung der Prozessoren zu flexibel: häufiger Wechsel des Prozessors (Thrashing) → sehr hoher Overhead I ideal: auf einem unbeschäftigten Prozessor fortsetzen I günstig: Prozessor, auf dem der Prozess unterbrochen wurde (Cache, TLB) I Parameter Affinität des Prozesses zu einem bestimmten Prozessor 21 / 33 22 / 33 Round Robin – Zeitscheibenverfahren Veranschaulichung Round-Robin Idee: Jeder Prozess erhält den Prozessor für eine bestimmte Zeitspanne (Quantum tq ), dann ist der nächste dran. I Grundgedanke: Fairness I tq klein → Umschaltaufwand im Verhältnis zur Nutzarbeit groß, kleine Reaktionszeit pro Prozess I tq groß → relativer Umschaltaufwand klein, Reaktionszeit pro Prozess groß I wichtiger Parameter: Umschaltzeit tcs (Context Switch Time) I Reaktionszeit eines Prozesses abhängig von tcs , Anzahl Prozesse, tq I häufig Kombination mit Prioritäten (RR innerhalb einer Prioritätsklasse) t cs ... P1 P2 P3 P1 ... tq t rsp Abbildung: Parameter beim Zeitscheibenverfahren 23 / 33 24 / 33 4 Beispiel: Einfache Batch-Verfahren Beispiel zu SJN First In First Out (FIFO, FCFS) I Job Prozesse werden in der Reihenfolge ihres Eintreffens (vollständig abgearbeitet) I fair I leicht zu analysieren (→ Warteschlangentheorie) 4 Beispieltasks: Shortest Job Next (SJN) I Idee: schnell ein paar kurze Jobs fertigstellen, bevor alle auf einen langen Job warten müssen. I Prozess mit der kürzesten Dauer wird ausgewählt, run-to-completion I Ausführungszeit muss bekannt sein I minimiert mittlere Verweilzeit (t v ) und mittlere Wartezeit (t w ) I ungerecht, Verhungern möglich J4 J1 0 3 Dauer J1 J2 J3 J4 6 8 7 3 J3 J2 9 16 24 Abbildung: Resultierender SJN-Schedule tw = 0 + 3 + 9 + 16 =7 4 tv = 3 + 9 + 16 + 24 = 13 4 25 / 33 26 / 33 Unix Linux? I I zeitscheibengesteuert (Quantum) versucht, 2 Klassen von Prozessen zu unterscheiden und getrennt zu behandeln: Rechnende Prozesse nutzen ihre Zeitscheibe voll aus I Interaktive Prozesse nutzen ihre Zeitscheibe häufig nicht aus (warten auf Interaktion durch Nutzer oder Gerät; d. h. blockieren häufig) wenn Zeitscheibe nicht ausgenutzt, wird Priorität (leicht) erhöht → Unix bevorzugt interaktive Prozesse: I I I dynamische Prioritäten mit Zeitscheiben I genaues Verfahren ziemlich kompliziert I jeder interaktive Prozess besitzt einen sog. nice-Value dieser beschreibt, wie der betreffende Prozess im Vergleich zu anderen interaktiven Prozessen priorisiert wird I 1. interaktive („I/O-bound“) 2. (vorwiegend) rechnende („compute-bound“) I I I I I I interaktive Prozesse reagieren besser rechnende Prozesse werden etwas benachteiligt -20: höchste Priorität 0: default 19: niedrigste Priorität Kommandos nice und renice (für bereits laufende Prozesse) ändern diesen Wert ~> renice 20 -p 24195 24195: old priority 0, new priority 19 Achtung: normale Nutzer dürfen Priorität nur monoton ändern. 27 / 33 28 / 33 Anzeige Priorität und nice-Wert mittels top Scheduling in Windows 2000/XP/Vista I top - 14:31:23 up 3:28, 6 users, load average: 1.68, 0.67, 0.30 Tasks: 91 total, 4 running, 87 sleeping, 0 stopped, 0 zombie Cpu(s): 42.1%us, 44.7%sy, 13.2%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 256396k total, 239564k used, 16832k free, 31364k buffers Swap: 1048568k total, 84k used, 1048484k free, 100936k cached PID 3735 24194 24195 23793 23928 1 2 3 4 5 6 9 10 104 138 139 140 USER root robge robge robge robge root root root root root root root root root root root root PR 16 15 39 15 15 15 RT 34 10 10 11 17 19 10 15 15 10 NI 0 0 19 0 0 0 0 19 -5 -5 -5 -5 -5 -5 0 0 -5 VIRT 161m 7404 5672 9640 7408 1948 0 0 0 0 0 0 0 0 0 0 0 RES 12m 3216 2636 5808 3260 648 0 0 0 0 0 0 0 0 0 0 0 SHR 4400 2244 1412 4272 2264 552 0 0 0 0 0 0 0 0 0 0 0 S R S R S R S S S S S S S S S S S S %CPU %MEM 50.9 4.9 26.6 1.3 15.6 1.0 6.0 2.3 0.3 1.3 0.0 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 TIME+ 3:08.68 1:59.25 2:08.29 0:01.57 0:01.82 0:01.14 0:00.00 0:00.00 0:00.08 0:00.00 0:00.00 0:00.00 0:00.00 0:00.02 0:00.01 0:00.08 0:01.04 prioritätsgesteuert, präemptiv 31 "real−time" levels COMMAND Xorg xterm bash WindowMaker xterm init migration/0 ksoftirqd/0 events/0 khelper kthread kblockd/0 kacpid kseriod pdflush pdflush kswapd0 16 15 variable levels 1 0 system level Abbildung: Prioritätsstufen im Windows 2000/XP 29 / 33 30 / 33 5 Scheduling in Windows 2000/XP/Vista I Round-Robin bei Threads gleicher Priorität I Länge des Quantums differiert für Desktop- und Server-Variante (Server: 6fach länger!) I Quantum wird für Vordergrundthreads verdoppelt temporäre Prioritätsanhebung (Priority Boost) in den Levels 1-15 u. a. bei I I I I Prinzip des Priority Boost tq Priorität Basis− priorität Komplettierung einer I/O-Operation Fensterthreads, die in den Vordergrund gelangen, Gefahr des Verhungerns. aktiv wartend aktiv preempted aktiv Zeit 32 / 33 31 / 33 Was haben wir gelernt? 1. on-line vs. off-line Scheduling 2. zeitgesteuertes vs. ereignisgesteuertes Scheduling 3. Interrupts 4. kooperatives vs. präemptives Multitasking 5. statische vs. dynamische Prioritäten 6. Round Robin; Einfluss der Zeitscheibenlänge 7. Priority Boost 33 / 33 6
© Copyright 2024 ExpyDoc