Betriebssystembau (BSB)

Ähnliche Dokumente
Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Ablaufplanung

Betriebssysteme (BS) VL 8 Fadenverwaltung. Daniel Lohmann. Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme

Der Scheduler von Windows Konzepte und Strategien

Betriebssysteme (BS) VL 8 Fadenverwaltung. Volkmar Sieh / Daniel Lohmann.

Betriebssysteme (BS) VL 8 Fadenverwaltung. Daniel Lohmann.

Betriebssystembau (BSB)

Betriebssystembau (BSB)

Der Scheduler von Windows 2000 Konzepte und Strategien

Betriebssysteme I WS 2015/2016. Betriebssysteme / verteilte Systeme Tel.: 0271/ , Büro: H-B 8404

Prozesse und Prozessmanagement des BS. 1 Unterschied Prozess, Threads. 1.1 Prozess. 1.2 Threads

Einführung. Anwendung. logischer Adreßraum. Kontrollfluß (Thread) = CPU führt Instruktionen aus. Was charakterisiert einen Kontrollfluß?

Threads and Scheduling

Zwangsserialisierung von Programmfäden. Monopolisierung der CPU durch Programmfäden. Vermeidung eines Ausführungsmonopols CPU-Schutz

Scheduling-Algorithmen: Zeitpunkt der Auswahlentscheidung

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Windows 2000 Scheduler

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Wolfram Burgard

Betriebssystembau (BSB)

Einführung. Schedulingziel. Klassisches Scheduling-Problem. 6. Kapitel Ressource Prozessor: Scheduling

Betriebssystembau (BSB)

Betriebssysteme. Wintersemester Kapitel 2 Prozess und Threads. Patrick Kendzo

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Einführung. Klassisches Scheduling-Problem. Schedulingziel. 6. Kapitel Ressource Prozessor: Scheduling

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

Ausgewählte Kapitel eingebetteter Systeme

Betriebssysteme Betriebssysteme und. Netzwerke. Netzwerke Theorie und Praxis

SS 2005 KV Betriebssysteme Multi-Processing & Scheduling A. Putzinger, FIM 05

Verteilte Systeme. Verteilte Systeme. 5 Prozeß-Management SS 2016

Grundlagen der Informatik für Ingenieure I. 5. Prozessverwaltung - Einführung

Dämon-Prozesse ( deamon )

Begriff: Scheduling Planung, Schedule Plan. Verplanung der CPU-Zeit an die Threads (bzw. Prozesse)

Betriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion

Wintersemester 2009/10 Helmut Seidl Institut für Informatik TU München

Eingebettete Systeme

3.2 Prozessumschaltung

Teil 3: Konzepte von Betriebssystemen

Round-Robin Scheduling (RR)

CiAO (CiAO is Aspect-Oriented)

3 Schnittstelle zum Betriebssystem 3.5 Multitasking. Schichten und Sichten eines Rechnersystems

Fakultät für Informatik der Technischen Universität München. Kapitel 3. Nebenläufigkeit

Proseminar KVBK : Scheduler unter Linux

Grundlagen Rechnerarchitektur und Betriebssysteme

3.3 Strategien zur Ablaufsteuerung

TI Übung 5. Prozess-Scheduling. Andreas I. Schmied SS2005. Abteilung Verteilte Systeme Universität Ulm

RTOS Einführung. Version: Datum: Autor: Werner Dichler

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

Praktische Lernkarten zum Ausschneiden, Zusammenkleben und Sammeln :-) zur Prüfungsvorbereitung Diplomprüfung. Betriebssysteme

Threads Einführung. Zustände von Threads

Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen)

Software ubiquitärer Systeme

Aufbau eines modernen Betriebssystems (Windows NT 5.0)

Betriebssysteme (BS) Scheduling. Olaf Spinczyk.

Betriebssysteme (BS) Scheduling. Olaf Spinczyk.

Übersicht. Monoprozessor-Scheduling. Einführung Anforderungen und Thread-Typen Zustandsmodelle

Betriebssysteme Kapitel E : Prozesse

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

RealTime Linux. Paul Seidel Seminar Prozessteuerung und Robotik WS 08/09 Lehrstuhl BS und Middleware Prof. Polze Hasso-Plattner-Institut Potsdam

3. Scheduler und Schedulingstrategien

Literatur. Betriebssysteme - WS 2015/16 - Teil 13/Scheduling 2

Betriebssysteme Sommersemester Betriebssysteme. 4. Kapitel. Scheduling. Dr. Peter Tröger / Prof. M. Werner. Professur Betriebssysteme

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

4.1 Einführung. Ziele. Begriff. Wiederholung: Prozess ist ein Konzept zur Virtualisierung eines Hardware-Betriebsmittels.

Betriebssysteme. FU Berlin SS 2003 Klaus-Peter Löhr

CPU-Scheduling - Grundkonzepte

Technische Informatik II. SoSe Jörg Kaiser IVS EOS

Betriebssysteme I WS 2013/2014. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/ , Büro: H-B 8404

5. Foliensatz Betriebssysteme und Rechnernetze

Musterlösung Prüfung WS 01/02

Betriebssysteme. CPU-Scheduling - Fallbeispiele. Sommersemester 2014 Prof. Dr. Peter Mandl. Prof. Dr. Peter Mandl Seite 1.

Test (Lösungen) Betriebssysteme, Rechnernetze und verteilte Systeme

Betriebssysteme. FU Berlin WS 2004/05 Klaus-Peter Löhr. bs-1.1 1

Single- und Multitasking

Prozesse und Scheduling unter Linux (Kernel 2.4.XX)

Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling

Entwurf und Implementierung einer Prozessinterkommunikation für Multi-Core CPUs Workshop Echtzeit 2013

Betriebssysteme (BS)

Kapitel 5: Threadwechsel (Thread Switch), Threadzustände (Thread States)

Echtzeitanwendungen mit Java Real Time Specification for Java

Echtzeitprogrammierung und Echtzeitverhalten von Keil RTX. Frank Erdrich Semester AI 7

Modul B-PRG Grundlagen der Programmierung 1

Betriebssysteme (BS)

Übung zu Grundlagen der Betriebssysteme. 7. Übung

Klausur Betriebssysteme

Betriebssysteme I WS 2016/17. Prof. Dr. Dirk Müller. 11 Scheduling

Lösung von Übungsblatt 8

Was machen wir heute? Betriebssysteme Tutorium 3. Organisatorisches. Prozesskontrollblock (PCB) Programmieraufgaben. Frage 3.1.a

Scheduling. Prozess-Ablaufplanung. Prof. Dr. Margarita Esponda Freie Universität Berlin WS 2011/2012

Betriebssysteme. Tutorium 2. Philipp Kirchhofer

Übung Betriebssysteme 11

J Prozesse und Nebenläufigkeit

Prozessrechner-Praktikum Echtzeitsysteme

Betriebssystembau (BSB) Einführung

Universität Karlsruhe (TH)

Transkript:

Betriebssystembau (BSB) Kontrollflussverwaltung Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os http://ess.cs.tu-dortmund.de/de/teaching/ws2008/bsb/ 1

Überblick: Vorlesungen Struktur des OO-StuBS Betriebssystems: Anwendung(en) Gerätezugriff (Treiber) Kontrollflussabstraktion Unterbrechungssynchronisation Prozessverwaltung Unterbrechungsbehandlung Interprozesskommunikation Betriebssystementwicklung Hardware Betriebssystembau: 08 Kontrollflussverwaltung 2

Überblick: Vorlesungen Struktur des OO-StuBS Betriebssystems: Anwendung(en) Gerätezugriff (Treiber) Kontrollflussabstraktion Unterbrechungssynchronisation Prozessverwaltung Unterbrechungsbehandlung Interprozesskommunikation Betriebssystementwicklung Hardware Thema der heutigen Vorlesung Betriebssystembau: 08 Kontrollflussverwaltung 3

Agenda Betriebssystemfäden Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Ablaufplanung Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Zusammenfassung Betriebssystembau: 08 Kontrollflussverwaltung 4

Agenda Betriebssystemfäden Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Ablaufplanung Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Zusammenfassung Betriebssystembau: 08 Kontrollflussverwaltung 5

Betriebssystemfäden: Motivation Ansatz: eine BS-Koroutine pro Anwendung Anwendungen unbemerkt als eigenständige Fäden ausführen Aktivierung der Anwendung erfolgt durch Aufruf Koroutinenwechsel erfolgt indirekt durch Systemaufruf Vorteile unabhängige Anwendungsentwicklung Ablaufplanung (Scheduling) wird zentral implementiert bei E/A kann eine Anwendung einfach vom BS blockiert und später wieder geweckt werden zusätzlicher Entzugsmechanismus (preemption mechanism) kann die Monopolisierung der CPU verhindern Betriebssystembau: 08 Kontrollflussverwaltung 6

Kooperativer Fadenwechsel Betriebssystem Anwendungen <app1> <app2> <kickoff> <kickoff'> <resume> <schedule> ret upcall app1 resume ret upcall app2 resume Legende ret resume Kontrollflusserzeugung: Kontrollflusszerstörung: explizite (Re-)Aktivierung: implizite (Re-)Aktivierung: ret Betriebssystembau: 08 Kontrollflussverwaltung 7

Kooperativer Fadenwechsel Betriebssystem Anwendungen <app1> <app2> <kickoff> <kickoff'> <resume> <schedule> ret upcall app1 resume ret upcall app2 resume Legende ret resume Kontrollflusserzeugung: Kontrollflusszerstörung: explizite (Re-)Aktivierung: implizite (Re-)Aktivierung: Elementaroperationen des BS schedule startet (indirekt) den ersten Anwendungsfaden, kehrt nicht zurück resume wechselt von einem Anwendungsfaden zum nächsten. Beide treffen eine Scheduling-Entscheidung. ret Betriebssystembau: 08 Kontrollflussverwaltung 8

Kooperativer Fadenwechsel Betriebssystem Anwendungen <app1> <app2> <kickoff> <kickoff'> <resume> <schedule> ret upcall app1 resume ret upcall app2 resume Legende Die Koroutine kickoff wird für jeden Applikationsfaden einmal durchlaufen Aktiviert die jeweilige Applikation durch einen upcall ret resume Kontrollflusserzeugung: Kontrollflusszerstörung: explizite (Re-)Aktivierung: implizite (Re-)Aktivierung: ret Betriebssystembau: 08 Kontrollflussverwaltung 9

Kooperativer Fadenwechsel Betriebssystem Anwendungen <app1> <app2> <kickoff> <kickoff'> <resume> <schedule> ret upcall app1 resume ret upcall app2 resume Legende ret resume Kontrollflusserzeugung: Kontrollflusszerstörung: explizite (Re-)Aktivierung: resume Systemaufrufe der Mechanismus für Anwendungen, um den Prozessor freiwillig abzugeben ggf. Verbunden mit einem Moduswechsel der CPU (in diesem Fall wird noch ein Wrapper benötigt) implizite (Re-)Aktivierung: ret Betriebssystembau: 08 Kontrollflussverwaltung 10

Präemptiver Fadenwechsel CPU-Entzug durch Zeitgeberunterbrechung die Unterbrechung ist nur ein impliziter Aufruf Behandlungsroutine kann resume aufrufen <app1> <app2> resume <resume> <handler> sti() resume ret ret iret Achtung: So geht es normalerweise nicht, denn resume trifft eine Scheduling-Entscheidung. Bei den notwendigen Datenstrukturen ist Unterbrechungssynchronisation zu beachten! Betriebssystembau: 08 Kontrollflussverwaltung 11

Fadenwechsel im Epilog Implementierung Scheduler-Daten (Liste der laufbereiten Fäden) werden auf der Epilogebene angesiedelt alle Systemfunktionen, die diese Daten manipulieren, müssen zuvor die Epilog-Sperre anfordern (enter/leave) - Faden erzeugen, Faden beenden, freiwilliger Fadenwechsel,... Grundregel beim Fadenwechsel der abgebende Faden fordert die Sperre an (ggf. implizit bei der Unterbrechungsbehandlung) der aktivierte Faden muss die Sperre freigeben Tipps aus dem Epilog heraus nie enter Aufrufen (Doppelanforderung) Grundregel (s.o) gilt auch für die erste Fadenaktivierung Mehr dazu in der Übung... Betriebssystembau: 08 Kontrollflussverwaltung 12

Arbeitsteilung Scheduler trifft strategische Entscheidungen zur Ablaufplanung betrachtet wird immer eine Menge lauffähiger Fäden - die Fäden sind allgemein in einer CPU-Warteschlange aufgereiht - die Sortierung erfolgt entsprechend der Scheduling-Strategie der aktuell laufende Prozess ist immer von der Entscheidung mit betroffen - dazu muss der laufende Faden jederzeit greifbar sein - vor der Umschaltung ist ist der laufende Faden (beim Dispatching) zu vermerken ein ausgewählter neuer Faden wird dem Dispatcher übergeben Dispatcher setzt die Entscheidungen durch und schaltet Fäden (mit Hilfe von resume) um merkt sich den gestarteten Faden Betriebssystembau: 08 Kontrollflussverwaltung 13

Agenda Betriebssystemfäden Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Ablaufplanung Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Zusammenfassung Betriebssystembau: 08 Kontrollflussverwaltung 14

Ablaufplanung: Einteilung... nach der Betriebsmittelart der zeitweilig belegten Hardware-Resourcen nach der Betriebsart des zu bedienenden/steuernden Rechnersystems nach dem Zeitpunkt der Erstellung des Ablaufplans nach der Vorhersagbarkeit von Zeitpunkt und Dauer von Prozessabläufen nach dem Kooperationsverhalten der (Benutzer/System-) Programme nach der Rechnerarchitektur des Systems nach der Ebene der Entscheidungsfindung bei der Betriebsmittelvergabe Betriebssystembau: 08 Kontrollflussverwaltung 15

... nach der Betriebsmittelart CPU scheduling des Betriebsmittels CPU die Prozessanzahl zu einem Zeitpunkt ist höher als die Prozessoranzahl ein Prozessor ist zwischen mehreren Prozessen zu multiplexen Prozesse werden dem Prozessor über eine Warteschlange zugeteilt I/O scheduling des Betriebsmittels Gerät, speziell: Platte gerätespezifische Einplanung der von Prozessen abgesetzten E/A-Aufträge disk scheduling, z.b., berücksichtigt typischerweise drei Faktoren: - (1) Positionszeit, (2) Rotationszeit, (3) Transferzeit Geräteparameter und Gerätezustand bestimmen die nächste E/A-Aktion die getroffenen Entscheidungen sind ggf. nicht konform zum CPU scheduling Betriebssystembau: 08 Kontrollflussverwaltung 16

... nach der Betriebsart batch scheduling interaktionsloser bzw. unabhängiger Programme nicht-verdrängende bzw. verdrängende Verfahren mit langen Zeitscheiben Minimierung der Kontextwechselanzahl interactive scheduling interaktionsreicher bzw. abhängiger Programme ereignisgesteuerte, verdrängende Verfahren mit kurzen Zeitscheiben Antwortzeitminimierung durch Optimierung der Systemaufrufe real-time scheduling zeitkritischer bzw. abhängiger Programme ereignis- oder zeitgesteuerte deterministische Verfahren Garantie der Einhaltung umgebungsbedingter Zeitvorgaben Rechtzeitigkeit ist entscheidend und nicht Geschwindigkeit Betriebssystembau: 08 Kontrollflussverwaltung 17

... nach dem Zeitpunkt online scheduling dynamisch, während der eigentlichen Programmausführung interaktive- und Stapelsysteme, aber auch weiche Echtzeitsysteme offline scheduling statisch, vor der eigentlichen Programmausführung wenn die Komplexität eine Ablaufplanung im laufenden Betrieb verbietet - Einhaltung aller Zeitvorgaben garantieren: ein NP-vollständiges Problem - kritisch, wenn auf jede abfangbare katastrophale Situation zu reagieren ist Ergebnis der Vorberechung ist ein vollständiger Ablaufplan (in Tabellenform) - (semi-) automatisch erstellt per Quelltextanalyse spezieller Übersetzer - oft zeitgesteuert abgearbeitet/ausgeführt als Teil der Prozessabfertigung die Verfahren sind zumeist beschränkt auf strikte Echtzeitsysteme Betriebssystembau: 08 Kontrollflussverwaltung 18

... nach der Vorhersagbarkeit deterministic scheduling bekannter, exakt vorberechneter Prozesse Prozesslaufzeiten/-termine sind bekannt, sie wurden ggf. offline berechnet die genaue Vorhersage der CPU-Auslastung ist möglich das System garantiert die Einhaltung der Prozesslaufzeiten/-termine die Zeitgarantien gelten unabhängig von der jeweiligen Systemlast probabilistic scheduling unbekannter Prozesse Prozesslaufzeiten/-termine bleiben unbestimmt die (wahrscheinliche) CPU-Auslastung kann lediglich abgeschätzt werden das System kann Zeitgarantien nicht geben und auch nicht einhalten Zeitgarantien sind durch Anwendungsmaßnahmen bedingt erreichbar Betriebssystembau: 08 Kontrollflussverwaltung 19

... nach dem Kooperationsverhalten cooperative scheduling von einander abhängiger Prozesse Prozesse müssen die CPU freiwillig abgeben, zugunsten anderer Prozesse die Programmausführung muss (direkt/indirekt) Systemaufrufe bewirken die Systemaufufe müssen (direkt/indirekt) den Scheduler aktivieren preemptive scheduling von einander unabhängiger Prozesse Prozessen wird die CPU entzogen, zugunsten anderer Prozesse Ereignisse können die Verdrängung des laufenden Prozesses bewirken die Ereignisverarbeitung aktiviert (direkt/indirekt) den Scheduler Betriebssystembau: 08 Kontrollflussverwaltung 20

... nach der Rechnerarchitektur uni-processor scheduling in Mehr{programm,prozess}systemen die Verarbeitung von Prozessen kann nur pseudo-parallel erfolgen multi-processor scheduling in Systemen mit gemeinsamen Speicher jeder Prozessor arbeitet seine lokale Warteschlange ab: - die Prozesse sind den Prozessoren (i.d.r.) fest zugeordnet - Prozessoren können leer laufen, obwohl noch Prozesse ausführbereit sind alle Prozessoren arbeiten eine globale Warteschlange ab: - die Prozesse sind den Prozessoren nicht fest zugeordnet - Prozessoren laufen erst leer, wenn keine Prozesse mehr ausführbereit sind die parallele Verarbeitung von Prozessen wird ermöglicht Betriebssystembau: 08 Kontrollflussverwaltung 21

... nach der Ebene long-term scheduling kontrolliert den Grad an Mehrprogrammbetrieb [s min] Benutzer Systemzugang gewähren, Programme zur Ausführung zulassen Prozesse dem medium- bzw. short-term scheduling zuführen medium-term scheduling als Teil der Ein-/Auslagerungsfunktion [ms s] Programme zwischen Vorder- und Hintergrundspeicher hin- und herbewegen swapping: auslagern (swap-out), einlagern (swap-in) short-term scheduling regelt die Prozessorzuteilung an die Prozesse [μs ms] ereignisgesteuerte Ablaufplanung: Unterbrechungen, Systemaufrufe, Signale Blockierung bzw. Verdrängung des laufenden Prozesses Betriebssystembau: 08 Kontrollflussverwaltung 22

Scheduling-Kriterien Antwortzeit Minimierung der Zeitdauer von der Auslösung einer Systemanforderung bis zur Entgegennahme der Rückantwort, bei gleichzeitiger Maximierung der Anzahl interaktiver Prozesse. Durchlaufzeit Minimierung der Zeitdauer vom Starten eines Prozesses bis zu seiner Beendigung, d.h., der effektiven Prozesslaufzeit und aller Prozesswartezeiten. Termineinhaltung Starten und/oder Beendigung eines Prozesses zu einem fest vorgegebenen Zeitpunkt. Vorhersagbarkeit Deterministische Ausführung des Prozesses unabhängig von der jeweils vorliegenden Systemlast. Durchsatz Maximierung der Anzahl vollendeter Prozesse pro vorgegebener Zeiteinheit. Liefert ein Maß für die geleistete Arbeit im System. Prozessorauslastung Maximierung des Prozentanteils der Zeit, während der die CPU Prozesse ausführt, d.h., sinnvolle Arbeit leistet. Gerechtigkeit Gleichbehandlung der auszuführenden Prozesse und Zusicherung, den Prozessen innerhalb gewisser Zeiträume die CPU zuzuteilen. Dringlichkeiten Bevorzugte Verarbeitung des Prozesses mit der höchsten (statisch/dynamisch zugeordneten) Priorität. Lastausgleich Gleichmäßige Betriebsmittelauslastung bzw. bevorzugte Verarbeitung der Prozesse, die stark belastete Betriebsmittel eher selten belegen. Betriebssystembau: 08 Kontrollflussverwaltung 23

Scheduling-Kriterien Antwortzeit Durchlaufzeit Termineinhaltung Vorhersagbarkeit Durchsatz Prozessorauslastung Gerechtigkeit Dringlichkeiten Lastausgleich Benutzerorientierte Kriterien wahrgenommenes Systemverhalten bestimmen die Akzeptanz durch Benutzer beeinflussen Systemorientierte Kriterien effiziente Nutzung der Betriebsmittel bestimmen die Kosten des Rechnerbetriebs Betriebssystembau: 08 Kontrollflussverwaltung 24

Betriebsarten und Kriterien allgemein Gerechtigkeit Lastausgleich Stapelsysteme Durchsatz Durchlaufzeit Prozessorauslastung interaktive Systeme Antwortzeit (Proportionalität Bearbeitungsdauer entspricht Erwartung) Echtzeitsysteme Dringlichkeit Termineinhaltung Vorhersagbarkeit Betriebssystembau: 08 Kontrollflussverwaltung 25

Agenda Betriebssystemfäden Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Ablaufplanung Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Zusammenfassung Betriebssystembau: 08 Kontrollflussverwaltung 26

Linux Tasks... sind die Linux Kernel Abstraktion für... UNIX Prozesse: Linux Threads: ein Kontrollfaden in einem Adressraum spezieller Prozess, der sich seinen virtuellen Adressraum mit mindestens einem anderen Thread teilt sind die vom Scheduler betrachteten Aktivitäten ein Programm mit vielen Threads bekommt unter Linux mehr Rechenzeit als ein klassischer Prozess - gleiches gilt allerdings auch für ein Programm mit einem Prozess und vielen Kindprozessen Betriebssystembau: 08 Kontrollflussverwaltung 27

Multi-Level Queues Quantum Priorität (0 ist hoch, 139 niedrig) 0 List-Head Task 1 List-Head Task Task Task fest 2 List-Head Abarbeitung groß (800ms) normal (100ms) 3 100 101 138 List-Head... List-Head List-Head... List-Head Task Task Task klein (5ms) 139 List-Head Task Task Abarbeitung Betriebssystembau: 08 Kontrollflussverwaltung 28

Multi-Level Queues Quantum Priorität (0 ist hoch, 139 niedrig) 0 List-Head Task 1 List-Head Task Task Task fest 2 List-Head Abarbeitung groß (800ms) 3 List-Head... Task Task Echtzeit-Tasks 101 List-Head Task normal SCHED_FIFO... nie verdrängt (100ms) SCHED_RR verdrängt, wenn feste Zeitscheibe abgelaufen Echtzeit-Tasks 138 List-Head verdrängen jeden anderen normalen Task. Durch die einfache Strategie kann das Verhalten in einer weichen klein Echtzeitumgebung 139 List-Head recht gut vorhergesagt Task werden. Task (5ms) 100 List-Head Abarbeitung Betriebssystembau: 08 Kontrollflussverwaltung 29

Multi-Level Queues Abarbeitung Quantum fest groß (800ms) normal (100ms) Priorität (0 ist hoch, 139 niedrig) 0 List-Head Task Gewöhnliche Tasks effective_prio 1 List-Head = static_prio Task + dynamic_prio Task Task statische Priorität entspricht dem nice value (-19 bis +20) dynamische 2 List-Head Priorität wird geschätzt (-5 bis +5) (interaktive Prozesse werden bevorzugt) 3 List-Head Task Task... 100 101 138 List-Head List-Head... List-Head Task klein (5ms) 139 List-Head Task Task Abarbeitung Betriebssystembau: 08 Kontrollflussverwaltung 30

Active und Expired active expired... Quantum verbraucht... Betriebssystembau: 08 Kontrollflussverwaltung 31

Active und Expired active expired... Quantum verbraucht... Betriebssystembau: 08 Kontrollflussverwaltung 32

Bereit-Listen im SMP Betrieb active... expired... oder active expired active expired active Task expired List Task... List............... 1 2 3 CPU 1 2 3 Betriebssystembau: 08 Kontrollflussverwaltung 33

Lastausgleich Load Balancers active expired active expired active expired.................. 1 2 3 Betriebssystembau: 08 Kontrollflussverwaltung 34

Fazit Linux interactive, probabilistic, online, preemptive, multiprocessor CPU scheduling Bevorzugung interaktiver Prozesse schnelle Reaktion auf Eingaben gleichzeitig Fortschrittgarantie für CPU-lastige Prozesse O(1) bei allen Operationen des Scheduler Einfügen, Entfernen, Scheduling-Entscheidung Mehrprozessorunterstützung Mehrere Bereit-Listen: Parallele Scheduler Ausführung Keine Idle-Phasen wie beim alten Linux Scheduler Unterstützung von CPU Affinitäten CPU-Lastausgleich - Beachtung angewärmter Caches Betriebssystembau: 08 Kontrollflussverwaltung 35

Agenda Betriebssystemfäden Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Ablaufplanung Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Zusammenfassung Betriebssystembau: 08 Kontrollflussverwaltung 36

Prozesse und Fäden in Win NT Prozess Stapel + Registersatz (1 je Faden) Register T 1 Stapel T 1 Register T 2 Stapel T 2 Register T 3 Stapel T 3 Register T 4 Stapel T 4 Code Gobale und statische Daten Datenzugriffe Betriebssystembau: 08 Kontrollflussverwaltung 37

Prozesse und Fäden in Win NT Prozess: Umgebung und Adressraum für Fäden Ein Win32 Prozess enthält immer mindestens einen Faden Faden (engl. thread): Code ausführende Einheit Fadenimplementierung wird durch den NT Systemkern erbracht Usermode-Threads möglich ( Fibers ), aber unüblich Threads bekommen vom Scheduler Rechenzeit zugeteilt Betriebssystembau: 08 Kontrollflussverwaltung 38

Der NT-Scheduler Preemptives, prioritätengesteuertes Scheduling: Thread mit höherer Priorität verdrängt Thread niedrigerer Priorität - Egal ob Thread sich im User- oder Kernelmode befindet - Die meisten Funktionen der Executive ( Kernel ) sind ebenfalls als Threads implementiert Round-Robin bei Threads gleicher Priorität - Zuteilung erfolgt reihum für eine Zeitscheibe (Quantum) Thread-Prioritäten Derzeit 0 bis 31, aufgeteilt in drei Bereiche - Variable Priorities: 1 bis 15 - Realtime Priorities: 16 bis 31 - Priorität 0 ist reserviert für den Nullseiten-Thread Threads der Executive verwenden maximal Priorität 23 Betriebssystembau: 08 Kontrollflussverwaltung 39

Zeitscheiben (Quantum) Kurze Quantumwerte Lange Quantumwerte Variabel Fix Variabel Fix Thread in HG-Prozess 6 18 12 36 Thread in VG-Prozess 12 18 24 36 Aktiver Thread in VG-Prozess 18 18 36 36 Quantum wird vermindert um den Wert 3 bei jedem Clock-Tick (alle 10 bzw. 15 msec) um den Wert 1, falls Thread in den Wartezustand geht Länge einer Zeitscheibe: 20 180 msec Betriebssystembau: 08 Kontrollflussverwaltung 40

Prioritätsklassen, relative Threadpriorität Relative Thread Priority Process Priority Class Idle Below Normal Normal Above Normal High 4 6 8 10 13 24 Time Critical =15 15 15 15 15 15 31 Highest +2 6 8 10 12 15 26 Above Normal +1 5 7 9 11 14 25 Normal 4 6 8 10 13 24 Below Normal -1 3 5 7 9 12 23 Lowest -2 2 4 6 8 11 22 Idle =1 1 1 1 1 1 16 Realtime Betriebssystembau: 08 Kontrollflussverwaltung 41

Prioritäten: Variable Priorities Variable Priorities (1-15) Scheduler verwendet Strategien, um wichtige Threads zu bevorzugen - Quantum-Stretching (Bevorzugung des aktiven GUI-Threads) - dynamische Anhebung (Boost) der Priorität für wenige Zeitscheiben bei Ereignissen Fortschrittsgarantie - Alle 3 bis 4 Sekunden bekommen bis zu 10 benachteiligte Threads für zwei Zeitscheiben die Priorität 15 Threadpriorität berechnet sich wie folgt (vereinfacht): Prozessprioritätsklasse + Threadpriorität + Boost Betriebssystembau: 08 Kontrollflussverwaltung 42

Prioritäten: Realtime Priorities Realtime Priorities (16-31) Reines prioritätengesteuertes Round-Robin - Keine Fortschrittsgarantie - Keine dynamische Anhebung - Betriebssystem kann negativ beeinflusst werden - Spezielles Benutzerrecht erforderlich (SeIncreaseBasePriorityPrivilege) Threadpriorität berechnet sich wie folgt: REALTIME_PRIORITY_CLASS + Threadpriorität Betriebssystembau: 08 Kontrollflussverwaltung 43

Dynamische Prioritätsanpassung Dynamic Boosts Thread-Prioritäten werden vom System in bestimmten Situationen dynamisch angehoben (nicht bei REALTIME_PRIORITY_CLASS) - Platten-Ein- oder Ausgabe abgeschlossen: +1 - Maus, Tastatureingabe: +6 - Semaphore, Event, Mutex: +1 - Andere Ereignisse (Netzwerk, Pipe,...) +2 - Ereignis in Vordergrundapplikation +2 Dynamic Boost wird verbraucht (eine Stufe pro Quantum) Betriebssystembau: 08 Kontrollflussverwaltung 44

Prioritätänderung nach einem Boost Priorität Quantum Mausnachricht: Anhebung der Priorität um 6 verdrängt (vor Quantumende) Basispriorität aktiv wartend aktiv bereit aktiv bereit Zeit Betriebssystembau: 08 Kontrollflussverwaltung 45

Der Balance-Set-Manager Etwa alle 3-4 Sekunden erhalten bis zu 10 benachteiligte Threads für zwei Zeitscheiben die Priorität 15 Fortschrittsgarantie Betriebssystembau: 08 Kontrollflussverwaltung 46

Auswahl des nächsten Threads (SMP) Ziel: Problem: gerechtes RoundRobin bei max. Durchsatz Cache-Effekte Affinität (Zuordnung von CPUs zu Thread): hard_affinity: ideal_processor: soft_affinity: last_run: Feste Zuordnung durch SetThreadAffinity() Ideale Zuordnung bei Erzeugung zugewiesen ( zufällig ) anpassbar mit SetThreadIdealProcessor() Letzte CPU, auf welcher der Thread lief intern vom Scheduler verwaltet Zeitpunkt der letzten Zuweisung zu einer CPU intern vom Scheduler verwaltet Betriebssystembau: 08 Kontrollflussverwaltung 47

Auswahl des nächsten Threads (SMP) Algorithmus: CPU n ruft FindReadyThread() auf Wähle höchstpriore, nicht-leere Warteschlange Suche in dieser Warteschlange nach Thread, mit - soft_affinity == n oder - ideal_processor == n oder - currenttime() last_run > 2 Quantum oder - priority >= 24 sonst wähle Kopf der Warteschlange Betriebssystembau: 08 Kontrollflussverwaltung 48

Auswahl des nächsten Threads (SMP) CPU 0 CPU 1 CPU 2 CPU 3 KiDispatcherReadyListHead 31... 8... FindReadyThread() hard affinity: 0, 1, 2, 3 ideal proc.: 0 soft affinity: 0 last run: 10 ms hard affinity: 0, 1, 2, 3 ideal proc.: 1 soft affinity: 1 last run: 20 ms hard affinity: 0, 1, 2, 3 ideal proc.: 3 soft affinity: 2 last run: 20 ms 0 Betriebssystembau: 08 Kontrollflussverwaltung 49

Auswahl des nächsten Threads (SMP) CPU 0 CPU 1 CPU 2 CPU 3 KiDispatcherReadyListHead 31... 8... FindReadyThread() hard affinity: 0, 1, 2, 3 ideal proc.: 0 soft affinity: 0 last run: 10 ms hard affinity: 0, 1, 2, 3 ideal proc.: 1 soft affinity: 1 last run: 20 ms hard affinity: 0, 1, 2, 3 ideal proc.: 3 soft affinity: 2 last run: 20 ms 0 primary candidate Betriebssystembau: 08 Kontrollflussverwaltung 50

Auswahl des nächsten Threads (SMP) CPU 0 CPU 1 CPU 2 CPU 3 KiDispatcherReadyListHead 31... 8... FindReadyThread() hard affinity: 0, 1, 2, 3 ideal proc.: 0 soft affinity: 0 last run: 10 ms hard affinity: 0, 1, 2, 3 ideal proc.: 1 soft affinity: 1 last run: 20 ms hard affinity: 0, 1, 2, 3 ideal proc.: 3 soft affinity: 2 last run: 20 ms 0 selected candidate Betriebssystembau: 08 Kontrollflussverwaltung 51

Änderungen in Windows 2003 Eine ReadyQueue pro CPU Algorithmus: CPU n ruft FindReadyThread() auf Wähle höchstpriore, nicht-leere Warteschlange von CPU n Wähle Kopf dieser Warteschlange Falls ReadyQueue komplett leer ist, aktiviere Idle-Loop Im Idle-Loop: Durchsuche ReadyQueue anderer CPUs Betriebssystembau: 08 Kontrollflussverwaltung 52

Fazit Windows NT interactive, probabilistic, online, preemptive, multiprocessor CPU scheduling Prioritätenmodell erlaubt feine Zuteilung der Prozessorzeit Dynamische Anpassungen beachten Usermode-Threads mit hohen Echtzeitprioritäten haben Vorrang vor allen System-Threads! Executive ist im allgemeinen unterbrechbar Weitere Verbesserungen für SMP in Windows 2003 Betriebssystembau: 08 Kontrollflussverwaltung 53

Agenda Betriebssystemfäden Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Ablaufplanung Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Zusammenfassung Betriebssystembau: 08 Kontrollflussverwaltung 54

Zusammenfassung Threads sind Koroutinen des Betriebssystems BS hat Entzugsmechanismen Strategie der Ablaufplanung wird als Scheduling bezeichnet Scheduling hat großen Einfluss auf die Performanz des Gesamtsystems, es legt fest,... welche Prozesse warten und welche voranschreiten welche Betriebsmittel wie ausgelastet sind Es gibt verschiedenste Varianten des Scheduling nur wenige Unterschiede bei gängigen PC/Workstation Bestriebsystemen eventuell aber starke Unterschiede in anderen Anwendungsdomänen Betriebssystembau: 08 Kontrollflussverwaltung 55