260 likes | 365 Views
4) Task-Verwaltung. Inhalte Eigenschaften von Rechenprozessen (Tasks) Taskübergänge (process control block) Multitasking (kooperativ und präemptiv) Scheduler Erzeugen, Starten und Beenden von Tasks Taskzustände (running, suspended, runnable/ready, dormant) Tasks und Threads
E N D
4) Task-Verwaltung • Inhalte • Eigenschaften von Rechenprozessen (Tasks) • Taskübergänge (process control block) • Multitasking (kooperativ und präemptiv) • Scheduler • Erzeugen, Starten und Beenden von Tasks • Taskzustände (running, suspended, runnable/ready, dormant) • Tasks und Threads • Zeitparameter von Tasks: Periode, Antwortzeit, Ausführungszeit, Spielraum, …
4) Task-Verwaltung • Task = Rechenprozess • Ein Rechenprozess ist ein von einem Echtzeit-Betriebssystem gesteuerter Vorgang der Abarbeitung eines sequenziellen Programms. • Rechenprozess beginnt mit Eintrag in eine Liste des Echtzeit-Betriebssystems und endet mit dem Löschen aus dieser Liste. • Rechenprozess existiert nicht nur während der Ausführung der Befehle, sondern auch während geplanter oder erzwungener Wartezeiten. • Rechenprozess benötigt Betriebsmittel/Ressourcen (CPU-Zeit, Speicherplatz, Zugriff auf E/A-Geräte) und ist selbst ein Betriebsmittel, das vom Betriebssystem (BS) verwaltet wird (Erzeugung, Terminierung, Scheduling, ...). • Ein Prozessor führt in jeder Zeiteinheit maximal einen Rechenprozess aus. • Laufen mehrere Prozesse auf einem Rechner, finden Prozesswechsel statt. Das Betriebssystem entscheidet, welcher Prozess zu welchem Zeitpunkt ausgeführt wird. • Rechenprozesse sind gegeneinander abgeschottet – jeder besitzt (virtuell) seine eigenen Betriebsmittel wie etwa den Adressraum. Das BS sorgt für diese Abschottung.
4) Task-Verwaltung • Eigenschaften von Rechenprozessen • Ein Rechenprozess wird durch folgende Eigenschaften beschrieben: • Eine Folge von Maschinenbefehlen, die durch das ausgeführte Programm (program code, text section) festgelegt sind. • Der aktuelle Zustand der Bearbeitung ist durch den Programmzähler und die Registerinhalte des Prozessors beschrieben (internal state). • Der Inhalt des Stapelspeichers, auf dem temporäre Variablen und Parameter für Funktionsaufrufe verwaltet werden (stack). • Der Inhalt des Speichers, in dem die globale Daten des Prozesses gehalten werden (data section). • Beziehungen zu anderen Betriebsmitteln wie z.B. geöffnete Dateien (external state).
4) Task-Verwaltung • Prozesskontrollblock (PCB) • Ein Prozess wird im Betriebssystem durch einen Prozesskontrollblock (Prozessleitblock) repräsentiert, in dem alle Informationen zu einem laufenden Prozess verwaltet werden. • Beispiel für Informationen in einem PCB:
4) Task-Verwaltung • Multitasking bezeichnet die Fähigkeit eines Betriebssystems, mehrere Aufgaben (Tasks) nebenläufig auszuführen. Dabei werden die verschiedenen Prozesse in so kurzen Abständen immer abwechselnd aktiviert, dass der Eindruck der Gleichzeitigkeit entsteht: • Optimiert die Prozessor-Auslastung und verringert die Prozessor-Wartezeit • Prozess ist ein „Programm in Ausführung“: • Speicherabbild eines gestarteten Programms mit den vom Betriebssystem benötigten Systemdaten • alle Prozesse laufen isoliert voneinander ab, so dass die Prozesszustände vor der Unterbrechung gespeichert werden müssen • Voraussetzung: • Ein Timer-Interrupt wird in regelmäßigen Abständen an die CPU geschickt • Die zugehörige Interrupt-Service-Routine löst den Scheduler (Prozessverwalter) aus • Kooperatives Multitasking (DOS, Windows 3.1): • Scheduler überlässt Prozessen die Zuteilung von CPU Zeit • Vorteil: geringer Verwaltungsaufwand nötig; Nachteil: fehlerhafter Prozess blockiert alle anderen • Präemptives Multitasking (Windows NT): • Scheduler verwaltet Liste aller aktiven Prozesse, Reihenfolge entscheidet über Dringlichkeit, Aufbau der Listen nach verschiedenen Prinzipien • Unterbrechungen jederzeit möglich
4) Task-Verwaltung • Kooperatives Multitasking • Jeder Prozess gibt seinen Status freiwillig an nächsten Prozess weiter • Wenn Prozess 1 fertig ist, gibt er dies an Prozess 2 weiter und wechselt in den Status rechenbereit, während der Prozess 2 von rechenbereit auf rechnend wechselt • Bsp: Eine Runde von Indianern, die die Friedenspfeife raucht • Jeder Indianer in diesem Kreis stellt einen Prozess (alle rechenbereit) dar und die Friedenspfeife stellt Rechenzeit dar • • Rauchender Indianer entspricht dem Zustand rechnend, alle anderen Indianer sind rechenbereit, da sie auf die Pfeife warten • Das Kooperative an diesem System ist, dass jeder Indianer, nachdem er eine Weile geraucht hat, die Pfeife freiwillig an den nächsten Indianer weitergibt. • • Hieraus wird auch der Nachteil des Systems sichtbar: Kann oder will ein Indianer die Pfeife nicht weiterreichen, kommt das System zum erliegen • • Vorteil: leicht implementierbar
4) Task-Verwaltung • Präemptives Multitasking • Jedem Prozess wird bestimmtes Zeitfenster gegeben in dem er ausgeführt wird; am Ende der Zeit wird der Prozess unterbrochen • Teil des Betriebssystems kümmert sich um Wechseln zum nächsten Prozess und gibt dem nächsten auszuführenden Prozess die Kontrolle bis zum Ende des Zeitfensters • Bsp.: Häuptling nimmt selbst die Pfeife in die Hand und reicht sie von Indianer zu Indianer weiter, ohne sie aus der Hand zu geben • • Da sich keiner zu widersprechen getraut, ist der ordnungsgemäße Ablauf sichergestellt. • • Häuptling fungiert als Interrupt, der regelmäßig ISR (Interrupt Service Routine ‚Pfeife weiterreichen’ aufruft • Dann gibt er dem jeweiligen Indianer, der nun rauchen darf, den Status running bis er ihn wieder unterbricht. • • Nachteil des Systems: mehr Programmieraufwand • • Vorteil: stabil funktionierendes System
4) Task-Verwaltung • Scheduler • Bestandteil des Betriebssystems • sinnvolle Verteilung der CPU Zeit an aktive Prozesse • verantwortlich für die Umsetzung von Multitasking • Ziele des Schedulers (die sich jedoch im Einzelfall widersprechen können) : • Fairness: jeder Prozess soll einen gerechten Anteil an der CPU-Leistung bekommen, d.h. kein Prozess wird dauerhaft benachteiligt • Effizienz: CPU sollte dauerhaft belegt werden • Antwortzeit: Antwortzeit soll für interaktive Benutzer minimal sein • Durchsatz: Anzahl der bearbeiteten Prozesse pro Zeitintervall soll maximiert werden (= die zur Verfügung stehenden Ressourcen sollen optimal ausgelastet werden) • Verweilzeit: Verweildauer von Programmen soll möglichst gering sein • Terminerfüllung: Prozesse, die zu einem bestimmten Termin beendet sein müssen, werden so geplant, dass der Termin eingehalten wird.
4) Task-Verwaltung • Erzeugen von Prozessen • Prozesse werden erzeugt bei: • Initialisierung des Systems (einfache Systeme, z.B. Steuerung eines Mikrowellenherds) • Systemaufruf zum Erzeugen eines (Sohn-)Prozesses durch einen anderen (Vater-)Prozess • Benutzeranfrage, einen neuen Prozess zu erzeugen • Initiierung einer Stapelverarbeitung (Batch-Job) • POSIX-Systeme benutzen hierzu den fork() Systemaufruf. • Der neu erzeugte Prozess (child) ist eine exakte Kopie des erzeugenden Prozesses (parent), besitzt aber eine neue Prozessnummer • Beide Prozesse führen dieselben Instruktionen nach dem fork() aus. • Der Ergebniswert des fork() Systemaufrufs ist in beiden Prozessen unterschiedlich. • Mittels des Systemaufrufs exec() können in einem Prozess neue Programme gestartet werden. • Windows Systemaufruf: CreateProcess() • Da beliebige Prozesse neue Prozesse erzeugen können, entsteht eine Hierarchie (Baum) von Prozessen, die als verkettete Liste organisiert ist. (POSIX = Portable Operating System Interface (Standard-Schnittstelle zw. Applikation und Betriebssystem)
4) Task-Verwaltung • Beenden von Prozessen • Prozesse können sich selbst durch den exit()-Systemaufruf beenden und damit aus dem System entfernen. • Ein Prozess kann die von ihm erzeugten Prozesse beenden, falls • ein Prozess die ihm zugestandenen Betriebsmittel verbraucht hat, • ein Prozess nicht länger gebraucht wird oder falls • der erzeugende Prozess sich beendet und es nicht gewünscht oder erlaubt ist, dass die erzeugten Prozesse unabhängig weiter existieren (cascading termination). • Auf die Beendigung eines erzeugten Prozesses kann in POSIX-Systemen mit Hilfe des wait() Systemaufrufs gewartet werden. • Der Ergebniswert (return code) eines sich beendenden Prozesses wird an den erzeugenden Prozess weitergeleitet.
4) Task-Verwaltung Beispiel: einfacher Kommandointerpreter while (1) { /* repeat forever */ type_prompt(); /* display prompt on screen */ read_command(); /* read input from the terminal */ pid = fork(); /* create a new process */ if (pid < 0) { /* repeat if system call failed */ perror("fork"); continue; } if (pid != 0) { /* parent process */ waitpid(pid, &status, 0); /* wait for child */ } else { /* child process */ execve(command, params, 0); /* execute command */ } } als Vaterprozess als Sohnprozess
4) Task-Verwaltung Weitere Begriffe: Dormant = idle, new Existent = ruhend Ready = runnable, busy Bereit = ablaufwillig, rechenbereit Running = executing Laufend = ablaufend, rechnend, aktiv Suspended = blocked, waiting Die 5 Taskzustände mit den wichtigsten Übergängen: Task ist der Prozessverwaltung bekannt gegeben dormant / existent Task ist gestartet und alle Betriebsmittel vorhanden (eingeplant) Betriebsmittel vorhanden ready / bereit suspended / blockiert Task ist eliminiert Task ist verdrängt Task ist der Prozessor zugeteilt Betriebsmittel fehlen running / laufend terminated / beendet Task ist abgearbeitet
4) Task-Verwaltung Die 5 Taskzustände mit den wichtigsten Übergängen: dormant / existent admitted I/O or event completion ready / bereit suspended / blockiert Task ist eliminiert Interrupt, trap dispatch I/O or event wait running / laufend terminated / beendet exit
4) Task-Verwaltung • Zustandsübergänge (Umhängen in eine andere Liste) • Es existieren drei Arten des Prozessor-Entzugs: • Aufgabe des Prozessors durch einen Warteaufruf Warteliste • Verdrängung durch einen anderen Prozess (Präemption) Bereitliste • Beendigung • Vom Zustand „blockiert“ geht es nicht direkt in den Zustand „running“ • Der Übergang von „running“ nach „blockiert“ wird immer durch den Prozess selbst initiiert • Der Übergang von „running“ nach „beendet“ wird immer durch den Prozess selbst initiiert • Der Übergang von „bereit“ nach „running“ und zurück geschieht immer durch das Betriebssystem
4) Task-Verwaltung • Leichtgewichtsprozesse (Threads) • Threads sind parallele Kontrollflüsse, die nicht gegeneinander abgeschottet sind: • laufen innerhalb des Adressraums eines „echten“ Rechenprozesses • teilen sich gemeinsame Ressourcen (z.B. globale Variable) • Es gibt Threads im Betriebssystem-Kernel: Scheduling durch BS • Es gibt Threads im Usermodus des Betriebssystems: Scheduling durch Anwendung, BS nur für Prozess-Scheduling verantwortlich Thread Usermodus Prozess Kernel
4) Task-Verwaltung • Unterschiede zwischen Tasks und Threads • Aus Sicht der Betriebszustände, der Zeitparameter, des Schedulings und der Synchronisation sind Thread und Task gleich.
4) Task-Verwaltung • Vorteile von Threads • Kontextwechsel zwischen Threads effizienter als zwischen Prozessen • kein Wechsel des Adressraums • kein automatisches Scheduling • kein Retten und Restaurieren des Kontextes (nur Programmzähler und Register) • Pro Zeiteinheit sind viel mehr Threadwechsel als Prozesswechsel möglich, deshalb auch „leichtgewichtige“ Prozesse • Einfachere Programmierung (gegenüber Tasks), wenn mehrere gleichzeitige Aktivitäten, von denen einige von Zeit zu Zeit blockieren, modelliert werden müssen • Bessere Performance bei Erzeugung und Zerstörung, da keine Ressourcen mit Threads verbunden sind • Bessere Performance bei Mischung von CPU- mit I/O-intensiven Aufgaben (kein Vorteil bei reiner CPU-Nutzung • ABER: Da die Schutzfunktion der getrennten Adressräume fehlt, werden Synchronisationsmechanismen benötigt
4) Task-Verwaltung • Prozesswechsel • Zur Erinnerung: • Auf einem Rechner laufen mehrere Prozesse. • Es gibt meist nur eine CPU. • Das heißt, die Prozesse müssen sich in der Nutzung der CPU abwechseln. • Das Betriebssystem entscheidet, welcher Prozess als nächstes die CPU benutzen darf. • Komponenten des Scheduling: • Prozesswechselkosten • Warteschlangenmodelle • Scheduling-Verfahren
4) Task-Verwaltung • Prozesswechselkosten • Ein Prozesswechsel zwischen 2 Prozessen A und B schließt genau genommen drei weitere mit ein: • Prozess A Unterbrechungsbearbeitung (UB) • UB Betriebssystem (BS) • BS Prozess B • Prozess B BS • BS Prozess A Prozess A ist verdrängt • Beim Prozesswechsel muss der Kontext des Prozesses im PCB gesichert werden, d.h. beim 1. PW: save state into PCBA und reload state from PCBB • Prozesswechsel sind relativ teuer (z.B. 122 μs auf Sun Sparc 20) Prozess A 1. KW (Kontextwechsel) 5. KW Unterbr. 2. KW BS 3. KW 4. KW Prozess B 1. Prozesswechsel (PW) 2. Prozesswechsel
4) Task-Verwaltung • Warteschlangenmodelle • Prozesse werden intern in Warteschlangen gehalten, wenn ihnen die angeforderten Betriebsmittel (z.B. die CPU) nicht zur Verfügung stehen oder die erwarteten Ereignisse (z.B. Beendigung eines Prozesses) noch nicht eingetreten sind. • Die Auswahlstrategien der Warteschlangen haben wesentlichen Einfluss auf das Systemverhalten. • Prozesse migrieren aus Sicht des Betriebssystems zwischen den verschiedenen Warteschlangen • Job queue (Prozessliste): Menge aller Prozesse im System • Ready queue (Bereitliste, CPU-Warteschlange): Menge der Prozesse, die im Hauptspeicher geladen und bereit zur Ausführung sind • Device queues (Warteschlange für jedes Gerät): Menge der Prozesse, die auf ein I/O-Gerät warten
4) Task-Verwaltung Warteschlangenmodelle Prozesse migrieren zwischen den Warteschlangen
4) Task-Verwaltung Warteschlangenmodelle Beispiel:
4) Task-Verwaltung ai: Ankunftszeit ri: Anforderungszeit si: Startzeit ci: Beendigungszeit di: Zeitschranke (Deadline) pi: Periode ei: Ausführungszeit li: Spielraum (Laxity) ji: Reaktionszeit Parameter zur Beschreibung des Zeitverhaltens von Tasks: Task-zustände pi blockiert ji li ei laufend ablaufwillig ruhend t si ai di ri ci
4) Task-Verwaltung ai: Ankunftszeit ri: Anforderungszeit si: Startzeit ci: Beendigungszeit di: Zeitschranke (Deadline) pi: Periode ei: Ausführungszeit li: Spielraum (Laxity) ji: Reaktionszeit Parameter zur Beschreibung des Zeitverhaltens von Tasks: Periode: Zeitdifferenz zwischen aufeinander folgenden Anforderungen Task-zustände pi Ausführungszeit: Rechenzeit der Task (ohne Wartezeiten) blockiert ji li ei Reaktionszeit: Zeit zwischen Anfor-derung und Start der Ausführung Spielraum: Restzeit zwischen Beendigung und Deadline laufend ablaufwillig Ankunftszeit: Task wird in Taskliste aufgenommen Anforderungszeit: Ereignis tritt ein, Task wird ablaufwillig Beendigungszeit: Task hat Aufgabe erledigt und ruht wieder Deadline: Zeit, zu der die Task spätestens beendet sein muss ruhend Startzeit: Task erhält erstmalig die CPU zugeteilt t si ai di ri ci
4) Task-Verwaltung ai Ankunftszeit (Arrival Time): Zeitpunkt, an dem eine Task dem Betriebssystem bekannt gemacht wird; die Taskverwaltung nimmt die Task in die Taskliste und setzt sie in den Zustand ruhend ri Anforderungszeit (Request Time): Die Task bewirbt sich bei der Taskverwaltung um den Prozessor. si Startzeit (Start Time): die Task erhält den Prozessor zugeteilt. ci Beendigungszeit (Completion Time): Die Task hat ihre Aufgabe erledigt und kehrt in den Zustand ruhend zurück. di Zeitschranke (Deadline): Zeitpunkt, an dem die Taskausführung spätestens beendet sein muss. Die Zeitschranke kann hart, fest oder weich sein. pi Periode (Period): Zeitdauer kennzeichnet die Wiederholungsrate bei periodischen Tasks, sie ergibt sich aus der Zeitdifferenz zwischen zwei aufeinander folgenden Anforderungszeiten einer Task. ei Ausführungszeit (Execution Time): Zeitdauer, die eine Task zur Ausführung ihrer Aufgabe benötigt, wenn sie sich im Zustand laufend befindet. Eine Variante ist die maximale Ausführungszeit (worst case execution time = WCET), eine obere Schranke der Ausführungszeit, die in keinem Fall überschritten werden darf. li Spielraum (Laxity): verbleibende Restzeit zwischen Beendigungszeit und Zeitschranke. ji Reaktionszeit (Reaction Time, Release Jitter): Zeitraum kennzeichnet die Verzögerung zwischen Anforderung und dem Start der Ausführung.
4) Task-Verwaltung Übungsfragen (Vorl. Uni Stuttgart) Eine Task im Zustand “runnable” wird momentan ausgeführt. Ein Task-Zustand kann direkt von “running” zu “dormant” wechseln. Eine Task im Zustand “suspended” kann direkt in den Zustand “running” wechseln. Eine Task im Zustand “dormant” ist nicht bereit, da Zeit- oder andere Bedingungen nicht erfüllt sind. Eine Task im Zustand “suspended” wartet auf das Auftreten eines Events.