650 likes | 1.03k Views
Prozesse. Inhalt Prozesse. Was ist ein Prozess? Wie wird er erzeugt? Was sind Threads? Wann nimmt man Threads, wann Prozesse? Prozess- Scheduling und Dispatching Scheduling in Echtzeitsystemen Scheduling in Multiprozessorsystemen. Prozess-Scheduling. Prozesse. Nebenläufigkeit.
E N D
Inhalt Prozesse • Was ist ein Prozess? Wie wird er erzeugt? • Was sind Threads? • Wann nimmt man Threads, wann Prozesse? • Prozess-Scheduling und Dispatching • Scheduling in Echtzeitsystemen • Scheduling in Multiprozessorsystemen R.Brause: Betriebssysteme - Prozesse
Prozess-Scheduling Prozesse Nebenläufigkeit Echtzeit-Scheduling Multiproz.-Scheduling R.Brause: Betriebssysteme - Prozesse
Programme und Prozesse Warum Mehrprozessbetrieb? Effiziente Nutzung des Systems • Mehrprogrammbetrieb:mehrere Teilnehmer und mehrere Aufgaben am Rechner bzw. Server-Betrieb im Netz • Parallelbetrieb:unterschiedliche CPU vs.I/O-Nutzung parallel auszuführender Programme R.Brause: Betriebssysteme - Prozesse
Prozesse und IO Parallelbetrieb:bessere CPU-Nutzung bei Ein/Ausg. CPU-Idle Diskette Festplatte Drucker Daten lesen Daten lesen Daten lesen Daten lesen Platte.. Platte lesen Platte schreiben Platte lesen Daten drucken Daten drucken Daten drucken ... und noch freie Prozessorkapazität für rechenintensives Programm im Hintergrund R.Brause: Betriebssysteme - Prozesse
Woraus bestehen Prozesse ? Prozess = Programmdaten + Prozeßkontext Prozess Prozesskontext MMU Daten CPU Register Register Pro- Dateiinfo, gramm Zugriffs- Kernel- rechte stack Stack R.Brause: Betriebssysteme - Prozesse
Unix Prozesskontext Speicherresidente ProzesskontrollblöckePCB der Prozesstafel • Scheduling-Parameter • Speicherreferenzen: Code-, Daten-, Stackadressen im Haupt- bzw. Massenspeicher • Signaldaten: Masken, Zustände • Verschiedenes: Prozesszustand, erwartetes Ereignis, Timerzustand, PID, PID der Eltern, User/Group-IDs Auslagerbarer Benutzerkontext(swappable user structure) Prozessorzustand: Register, FPU-Register, Systemaufruf: Parameter, bisherige Ergebnisse, Datei-Info-Tabelle (file descriptor table) Benutzungsinfo: CPU-Zeit, max. Stackgröße, Kernel-stack: Platz für Systemaufrufe des Prozesses R.Brause: Betriebssysteme - Prozesse
Prozesszustände blockiert erwarte erhalte Signal erzeugt term i niert Signal bereit nicht-ex nicht-ex. Zuteilung Prozesse warten... • auf den Prozessor (bereit) • auf eine Nachricht (blockiert) • auf ein Zeitsignal (blockiert) • auf Daten des I/O-Geräts (blockiert) Dispatcheraktionen aktiv running Scheduler Erstellen der „bereit“-Liste Dispatcher schnelle Zuteilung zur CPU R.Brause: Betriebssysteme - Prozesse
Beispiel Unix: Prozesszustände blockiert erhalte warte auf Ereignis Signal terminiert erzeugt zombi nicht-ex nicht-ex . idle bereit aktiv . Zuteilung warte auf weitermachen Eltern stop R.Brause: Betriebssysteme - Prozesse
Beispiel Prozesserzeugung | pr | lpr Kindsprozess3 Kindsprozess2 Ein Programm (Job) kann mehrere Prozesse erzeugen z.B. UNIX shell (Elternprozeß) cat Text1 Text2 Kindsprozess1 R.Brause: Betriebssysteme - Prozesse
Beispiel Prozesserzeugung Beispiel shell Pseudocode LOOP Write(prompt); (* tippe z. B. ´>´ *) ReadLine(command, params); (* lese strings, getrennt durch Leertaste *) pid := fork(); (* erzeuge Kopie dieses Prozesses *) IF (pid=0) THEN execve(command,params,0)(* Kind: überlade mit Programm *) ELSE wait()(* Eltern: warte aufs Ende vom Kind *) END; END; R.Brause: Betriebssysteme - Prozesse
Unix: Prozesserzeugung Eltern Kind PID = fork() /* PID 0 */ /* PID = = 0 */ if if (PID==0) (PID==0) { ... { exec („program“) ... ... }; }; PID = wait(Status) exit (Status) }; . . . . . . R.Brause: Betriebssysteme - Prozesse
Windows NT: Thread-Zustände trans waiting. erhalte warte auf Signal Signal erzeugt terminiert nicht-ex. ready running termin. init nicht-ex. Abbruch ausgewählt, dispatch abgebrochen standby R.Brause: Betriebssysteme - Prozesse
Windows NT Subsystem-Prozesserzeugung • Unix-Prozesserzeugung POSIX: NewPID = fork() LPC-message Win32: NewPIDhandle := NtCreateProcess (Eltern=CurrentPID) SystemCall WinNT kernel R.Brause: Betriebssysteme - Prozesse
Prozesse: User mode und kernel mode syscall User Prozess kernel code usermodekernel mode syscall User Prozess Kernel Prozess usermodekernel mode R.Brause: Betriebssysteme - Prozesse UNIX Windows NT
Frage • Antwort: • Warteschlangen: bereit, blockiert. • Keine Warteschlangen: alle anderen: - aktiv, standby, nicht-existent, …. R.Brause: Betriebssysteme - Prozesse Welche Prozess-Zustände haben Warteschlangen, welche keine?
Prozess-Scheduling Prozesse Nebenläufigkeit Echtzeit-Scheduling Multiproz.-Scheduling R.Brause: Betriebssysteme - Prozesse
Threads (Coroutinen) • gemeinsamerProzeßkontext (Speicher-Addressbereich, Dateien (filehandles) asynchroner, paralleler, unterschiedlicher Programmverlauf (stack !) Thread 1 Thread 2 Thread 3 Gemeinsamer Prozeßkontext R.Brause: Betriebssysteme - Prozesse
Nebenläufigkeit gemeinsamer Stack: temp., lokale Variable • Methoden Methode 1 call return Methode 2 call return call return Methode n Prozess- StackPointer R.Brause: Betriebssysteme - Prozesse
Nebenläufigkeit • Coroutinen und Threads Thread 3 Thread 4 Thread 1 Stack 3 Stack 4 Thread 2 Stack 1 Stack 2 Prozess- StackPointer R.Brause: Betriebssysteme - Prozesse
Nebenläufigkeit CPU CPU MMU MMU Register Register Register Register Dateiinfo, Dateiinfo, Kernel- Kernel- Zugriffs- Zugriffs- stack stack rechte rechte • Prozesse und Threads PC Prozess SP Prozesskontext Speicher RAM Code PC SP Prozess R.Brause: Betriebssysteme - Prozesse
Prozesse und Threads R.Brause: Betriebssysteme - Prozesse DEF Prozess Ein Prozess umfasst Programmcode sowie alle Verwaltungsinformation, die zum Ausführen unabhängig von anderem Programmcode vom Betriebssystem benötigt wird (Prozesskontext). Er teilt mit anderen Prozessen nichts, nur die global bekannten Betriebsmittel wie Dateisystem, Drucker etc. Er kann als Untereinheiten mehrere Threadsenthalten. DEF Thread Ein Thread umfasst neben dem Programmcode nur die Verwaltungsinformation SP des Stacks und des Programmzählers PC. Er teilt den gesamten restlichen Prozesskontext (Speicherbereich, offene Dateien, Pipes, …) mit allen anderen Threads seines Prozesses.
Thread- Typen: lightweight threads • kontrolliert vom Benutzerprogramm (z.B. Unix-Bibliothek). Sie laufen im (wie der Prozess) im usermode. Vorteil: sehr schneller thread-Wechsel T1, T2 Nachteil: Blockieren aller threads bei I/O-Warten von einem thread. Prozess T1 T2 Systemaufruf Prozeß- I/O R.Brause: Betriebssysteme - Prozesse
Thread- Typen: heavyweight threads • kontrolliert vom Betriebssystem(z.B. Windows NT) via systemcalls. Sie laufen (wie der Prozess) im usermode. Vorteil: Unabhängiger I/O aller threadsT1, T2 Nachteil: langsamer BS-Systemaufruf nötig „fibers“ in Windows NT Prozess T1 T2 Systemaufruf thread I/O thread I/O R.Brause: Betriebssysteme - Prozesse
Frage • Wozu gibt es Threads im Unterschied zu Prozessen? Bitte schreiben Sie einen Satz auf. Antwort Damit unabhängigeTeilaufgaben auch unabhängig abgearbeitet werden können, ohne zeitaufwändigen Kontextwechsel R.Brause: Betriebssysteme - Prozesse
Prozess-Scheduling Prozesse Nebenläufigkeit Echtzeit-Scheduling Multiproz.-Scheduling R.Brause: Betriebssysteme - Prozesse
Prozeßscheduling Ankunft Warteschlange Abgang Prozessor Vorplanung in verschiedenen Zeitmaßstäben Hier: Nur Kurzzeitschedul ! R.Brause: Betriebssysteme - Prozesse
Prozeßscheduling: Ziele • Auslastung der CPU Ziel ist die 100%ige Auslastung der CPU, normal 40%–90%. • Durchsatz (throughput) # Jobs pro Zeiteinheit sollte maximal sein. • Faire Behandlung (fairness) Jeder Benutzer sollte im Mittel den gleichen CPU-Zeitanteil erhalten. • Ausführungszeit (turnaround time) Die Zeitspanne vom Jobbeginn bis zum Jobende sollte sie minimal sein. Sie enthält alle Zeiten in Warteschlangen, der Ausführung (Bedienzeit) und der Ein- und Ausgabe. • Wartezeit (waiting time) Wartezeit in der bereit-Liste minimieren (einziger Scheduling-parameter) • Antwortzeit (response time) Die Zeit zwischen einer Eingabe und der Übergabe der Antwortdaten an die Ausgabegeräte sollte minimal werden (interaktive Systeme!). R.Brause: Betriebssysteme - Prozesse
Prozeßscheduling: Konflikte • Problem: Ziele sind weder vollständig noch konsistent Prozeßumschaltung (context switch) kostet Zeit. • Werden viele kurze Prozesse bevorzugt Durchsatz, Ausführungszeit, Antwortzeit werden gut, aber die Umschaltzeit verkürzt rel. Zeitanteil für lange Prozesse (fairness!) • Erhöhen der Auslastung Erhöhen der Antwortzeit; Beispiel Autovermietung Werden bestimmte Kunden bevorzugt, müssen andere warten. Sind alle Wagen gut ausgelastet, müssen neue Kunden warten. • Es gibt keinen idealen Schedulingalgorithmus ! R.Brause: Betriebssysteme - Prozesse
Nicht-präemptives Scheduling Job1=5, Job2=10, Job3=3 Job 1 Job 2 Job 3 0 5 15 18 Shortest Job First (SJF) Job mit kürzester Bedienzeit zuerst (min. mittl. Wartezeit). Job 3 Job 1 Job 2 0 3 8 18 • First Come First Serve (FCFS). Einsortieren in der Ankunftsreihenfolge (FIFO-Warteschlange). Ausführungszeit: Job1=5, Job2=15, Job3=18; Mittelwert=38/3=12,67. „Jeder Prozeß läuft so lange, wie er will.“ Ausführungszeit: Job1=18, Job2=8, Job3=3; Mittelwert=29/3=9,67. R.Brause: Betriebssysteme - Prozesse
Nicht-präemptivesScheduling 1 5 3 1 5 3 Priority Scheduling (PS) Priorität Prozeß; Bevorzugung von hoher Priorität. Prozesse P1 P2 P3 Priorität 1, 5, 3 Länge 1, 5, 3 Beispiel non-präempt. Prioritätsscheduling SchedulP2, P3, P1 mittl. Bearbeitungszeit: (5 + 8 + 9) : 3 = 7 1/3 HoheZahl = hohePrio Beispielnon-präempt. FIFO Schedul P1, P2, P3, mittl. Bearbeitungszeit: (1 + 6 + 9) : 3 = 5 1/3 R.Brause: Betriebssysteme - Prozesse
Nicht-präemptivesScheduling • Highest Response Ratio Next (HRN) Antwortzeit Bevorzugung min. Bedienzeit, Bedienzeit aber: lange Bedienzeit lange Antwortzeiten hoher Quotient. Vorausgesetzt: gemessene (geschätzte) Werte Scheduling-Problem SJF und PS erlauben verhungern (starvation) von benachteiligten Prozessen Lösung Statt feste Prio (statischePrio) für einen Prozess, änderbare Prio (dynamischePrio) vorsehen. Wächst sie mit der Zeit, kommt jeder Prozess einmal dran. = max R.Brause: Betriebssysteme - Prozesse
Präemptives Scheduling Prozeß1 Prozeß2 Prozeß3 Prozeß1 Prozeß2 Zeitscheibe Ankunft Warteschlange Abgang Prozessor Abbruch Rücksichtslose Prozesse (Benutzer!) Einführung von „Zeitscheiben“: „Jeder Prozeß läuft nur so lange, wie er darf.“ R.Brause: Betriebssysteme - Prozesse
Präemptives Scheduling • Round Robin (RR)FIFO-Warteschlange Einsortieren in der Ankunftsreihenfolge + Zeitscheibe Zeitscheibengröße T von Umschaltzeit des Kontextes abhängig! Richtwert: T > I/O-burst Intervall von 80% der Jobs Dynamic Priority Round Robin (DPRR) RR + wachsende Prio-Vorstufe Shortest Remaining Time First Job mit kürzester verbleibender Bedienzeit zuerst . R.Brause: Betriebssysteme - Prozesse
Frage Antwort: Nein, da auch ihre Zeitscheibe regelmäßig zugeteilt wird. R.Brause: Betriebssysteme - Prozesse Können Prozesse beim präemptiven Scheduling verhungern ?
Beispiele RR-Scheduling P1 P2 P3 1 1 2 1 2 2 Prozesse P1, P2, P3, Schedul: P1, P2, P3 Längen 1, 3, 5, • Beispiel: Wechsel nach großen Zeitscheiben = 1 Jobeinheit P1 P2 P3 mittl. Bearbeitungszeit: (1 + 6 + 9) : 3 = 5 1/3Jobeinheiten Beispiel Wechsel nach jeweils sehr kurzen Zeitscheiben mittl. Bearbeitungszeit: (3 + 7 + 9) : 3 = 6 1/3Jobeinheiten R.Brause: Betriebssysteme - Prozesse
Adaption der Parameter Beispiel: Parameter a eines Prozesses = gewichteter Mittelwert aus dem aktuellen Wert bt und dem früheren Wert a(t-1) a(t) = (1–) a(t-1) + bt Es ergibt sich hier die Reihe a(0) b0 a(1) = (1–) b0 + b1 a(2) = (1–)2b0 + (1–) b1 + b2 a(3) = (1–)3b0 + (1–)2b1 + (1–) b2+ b3 ... a(n) = (1–)n b0 + (1–)n–1b1 +...+ (1–)n–ibi +...+ bn Mit 1 schwindet der Einfluß der frühen Messungen exponentiell, der Parameter altert (zeitabhängige pdf). R.Brause: Betriebssysteme - Prozesse
Multiple Warteschlangen und Scheduler multi level scheduling • Multiple Warteschlangen für I/O Hauptprozessor I/O Festplatte 1 extra Warteschlange pro Gerät I/O Festplatte 2 . . . I/O Terminals extra Warteschlange pro Prio Verhungern? R.Brause: Betriebssysteme - Prozesse
Multiple Warteschlangen und Scheduler extra Warteschlange pro Prio: Prio 0: Systemprozesse Prio 1: Interaktive Jobs Prio 2: Allgemeine Jobs Prio 3: Rechenintensive Jobs RR-Korrektheit: Kein Verhungern durch feste Reihenfolge multi level scheduling: Kein Verhungern durch zeitl. ansteigende Job-Priorität Round Robin dyn.Prio(t) ++ R.Brause: Betriebssysteme - Prozesse
Scheduling: Unix • Round-Robin, ersetzbar. • dyn.Prio, jeweils eine FCFS-Warteschlange pro prio Benutzer: nice-Kommando • Umhängen in andere Schlangen bei prio-Erhöhung HP-UX: 0 = hohe prio Prio 0-255 fixe Multi level-Warteschlangen R.Brause: Betriebssysteme - Prozesse
Scheduling: Windows NT • Round-Robin für Threads • Non-präemptiv für real time Jobs • Vom Scheduling getrenntes dispatching • Dyn. Prio, abhängig von Zeit und Liste: erhöht beim Warten, abgesenkt beim Laufen • Prozessoraffinitäten • Symmetrisches multiprocessing 0 = kleinste prio R.Brause: Betriebssysteme - Prozesse
Prozess-Scheduling Prozesse Nebenläufigkeit Echtzeit-Scheduling Multiproz.-Scheduling R.Brause: Betriebssysteme - Prozesse
Scheduling in Echtzeitbetriebssystemen Echtzeitbetriebssysteme (real time systems) = ? • Soft-Echtzeitsysteme: gewünschte Zeitschranken „Verzögerung ärgerlich, aber Zeitschranke nicht bindend“: Texteingabesysteme, Banken, Behörden ,... Hard-Echtzeitsysteme: verbindliche Zeitschranken Konsequenzen bei Nichterfüllung der Spezifikation: Kontrolle von Kernkraftwerken, Flugzeugen, Fahrzeugen, Produktionsstraßen, ... Typisch: periodisch wiederkehrende, gleiche tasks R.Brause: Betriebssysteme - Prozesse
Scheduling in Echtzeitbetriebssystemen BeispielFlugdatenverarbeitung,Tasks für flight-by-wire Prozessorauslastung H • Beschleunigung (x,y,z) 5 ms, Dauer 1 ms, H = 1/5 = 20% • Drehungswinkel 40 ms, Dauer 5 ms, H = 5/40 = 12,5% • Monitordisplay 100 ms, Dauer 2 ms, H = 2/100 = 2% • Temperatur 1 s, Dauer 1 ms H = 1/1000= 0,1% • GPS- Position 10 s, Dauer 20 ms H = 20/10000=0,2% • Scheduling-Strategien = ? R.Brause: Betriebssysteme - Prozesse
Scheduling in Echtzeitbetriebssystemen • Polled LoopDauerwarten aber: andere Anforderungen • Interruptgesteuerte Systeme Prio-gesteuerte ISR aber: Interrupt geringer Prio kann verloren gehen • FIFO Warteschlange aber: berücksichtigt nicht wichtige Prozesse kleiner Periode Besser: Prioritäten beachten ! R.Brause: Betriebssysteme - Prozesse
Dynamisches RT-Scheduling • Minimal Deadline First MDF, Earliest Deadline First EDF aber: nutzlosbeivielen Jobs gleicher Deadline • Least Laxity First LLF(Zeitschranke-Jobende)= min aber: restl. Zeitbedarfaller Jobs hoherRechenbedarf • Minimal Processing Time FirstSJF-Strategie aber: Prio unbeachtet bei langen Jobs • Rate-Monotonic Scheduling (RMS)Task-Frequenz ~ Prio aber: nicht H=100% Auslastung, sondern nur H=n(21/n–1) Prioritätsinversion für wichtige Tasks mit geringer Frequenz R.Brause: Betriebssysteme - Prozesse
Dynamisches RT-Scheduling Strategien ohne Prioritäten für H=100% Auslastung • Time Slice SchedulingTSS Zeitscheibenlänge ~ CPU-Auslastung aber: langeScheibeEvent-Puffernötig • GuaranteedPercentageSchedulingGPS Anzahl der Zeitscheiben ~ CPU-Auslastung R.Brause: Betriebssysteme - Prozesse
Scheduling in Echtzeitbetriebssystemen • Notwendige, kritische Tasks hohe Prio(z.B. RMS, GPS) • Nützliche, unkritische Tasks niedrige Prio Foreground-Background Scheduling Hintergrundprozesse: Selbsttests, RAM scrabbing, Alarm-Monitore • Notwendige, aber unkritische Tasks: mittl. Prio Zeitpunkt TSwenn notw. Ressourcen frei, Zeitschranke TD, restl. Bedienzeit TC, Wichtigkeit w • Minimum Earliest Startmin. TS • Least Laxity First min. TD - (TS+TC) • Kombin. Kriterium 1 min. TD + wTC • Kombin. Kriterium 2 min. TD + wTS Simulationsergebnis: Kombin. Kriterium 2 ist am besten! R.Brause: Betriebssysteme - Prozesse
Scheduling in Echtzeitbetriebssystemen Echtzeitanforderungen: kontrollierte Zeitvergabe! • Betriebssysteme Keine swapping-Algorithmen (Prozessauslagerung) • Programme Keine automatische Speicherbereinigung Java: garabagecollection der JVM abschalten, eigene Heap-Verwaltung einführen R.Brause: Betriebssysteme - Prozesse
Embedded Systems R.Brause: Betriebssysteme - Prozesse Unterschiede „normaler“ BS zu eingebetteten Systemen: Eingebettete Systeme haben Kein Dateisystem (nur ROM, EEPROM,..) Keine Angriffe (keine Viren): kein user/kernelmode Kein RAM-Allocation (nur feste Programmlagen) Keine Sicherheitsfunktionen Kein Netzwerk ? … Aber: I/O-System, Dispatcher,… „Abgespecktes“ System ist problematisch bei Erweiterung!