Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Ablaufplanung

Ähnliche Dokumente
Betriebssystembau (BSB)

Der Scheduler von Windows Konzepte und Strategien

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

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

Betriebssysteme (BS) VL 8 Fadenverwaltung. Daniel Lohmann.

Der Scheduler von Windows 2000 Konzepte und Strategien

Betriebssystembau (BSB)

Betriebssystembau (BSB)

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 7 Scheduling. Wolfram Burgard

Windows 2000 Scheduler

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

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

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

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Betriebssysteme. Wintersemester Kapitel 2 Prozess und Threads. Patrick Kendzo

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

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

Ausgewählte Kapitel eingebetteter Systeme

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

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

Betriebssysteme Betriebssysteme und. Netzwerke. Netzwerke Theorie und Praxis

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

Proseminar KVBK : Scheduler unter Linux

Grundlagen Rechnerarchitektur und Betriebssysteme

Round-Robin Scheduling (RR)

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

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

3.3 Strategien zur Ablaufsteuerung

Teil 3: Konzepte von Betriebssystemen

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

Aufbau eines modernen Betriebssystems (Windows NT 5.0)

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

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

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

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

Dämon-Prozesse ( deamon )

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

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

Eingebettete Systeme

3. Scheduler und Schedulingstrategien

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

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

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

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

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

Betriebssysteme (BS) Scheduling. Olaf Spinczyk.

Betriebssysteme (BS) Scheduling. Olaf Spinczyk.

Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen)

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

Single- und Multitasking

Echtzeitanwendungen mit Java Real Time Specification for Java

CPU-Scheduling - Grundkonzepte

Ein Scheduler für alle Fälle Robert Kaiser, SYSGO AG

5. Foliensatz Betriebssysteme und Rechnernetze

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

Musterlösung Prüfung WS 01/02

3.2 Prozessumschaltung

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

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

Übung zu Grundlagen der Betriebssysteme. 7. Übung

Überblick und Aufgaben

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

J Prozesse und Nebenläufigkeit

Threads Einführung. Zustände von Threads

Modul B-PRG Grundlagen der Programmierung 1

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

Betriebssystembau (BSB)

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

Betriebssysteme (BS)

CiAO (CiAO is Aspect-Oriented)

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

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

Prozesse und Scheduling unter Linux (Kernel 2.4.XX)

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Maren Bennewitz

Klausur Betriebssysteme

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

Übung Betriebssysteme 11

Lösung von Übungsblatt 8

Verteilte Echtzeit-Systeme

Betriebssysteme (BS)

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

Universität Karlsruhe (TH)

Koexistenz unterschiedlicher Zeitanforderungen in einem gemeinsamen Rechensystem

Betriebssysteme. Thomas Fahringer. Institut für Informatik Universität Innsbruck. VO Betriebssysteme

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

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

Betriebssysteme. Tutorium 2. Philipp Kirchhofer

Transkript:

Betriebssysteme (BS) Überblick: Vorlesungen Anwendung(en) Fadenverwaltung Daniel Lohmann Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Gerätezugriff (Treiber) Kontrollflussabstraktion Unterbrechungssynchronisation Hardware Prozessverwaltung Unterbrechungsbehandlung Interprozesskommunikation Betriebssystementwicklung Thema der heutigen Vorlesung 2 Agenda Agenda Betriebssystemfäden Betriebssystemfäden Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Ablaufplanung Ablaufplanung Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Zusammenfassung Zusammenfassung 3 4

Betriebssystemfäden: Motivation Kooperativer Fadenwechsel Ansatz: Anwendungen unbemerkt als eigenständige Fäden ausführen eine BS-Koroutine pro Anwendung 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 Betriebssystem Anwendungen <app1> <app2> <kickoff> <kickoff'> <> <schedule> upcall app1 upcall app2 Legende Kontrollflusserzeugung: Kontrollflusszerstörung: explizite (Re-)Aktivierung: implizite (Re-)Aktivierung: 5 6 Kooperativer Fadenwechsel Kooperativer Fadenwechsel Betriebssystem Anwendungen <app1> <app2> <kickoff> <kickoff'> <> <schedule> upcall app1 upcall app2 Legende Kontrollflusserzeugung: Elementaroperationen des BS Kontrollflusszerstörung: explizite (Re-)Aktivierung: schedule startet (indirekt) den ersten implizite (Re-)Aktivierung: Anwendungsfaden, kehrt nicht zurück. wechselt von einem Anwendungsfaden zum nächsten. Beide treffen eine Scheduling-Entscheidung. Betriebssystem Anwendungen <app1> <app2> <kickoff> <kickoff'> <> <schedule> upcall app1 upcall app2 Legende Kontrollflusserzeugung: Die Koroutine kickoff Kontrollflusszerstörung: wird für jeden Applikationsfaden explizite einmal (Re-)Aktivierung: instantiiert implizite (Re-)Aktivierung: aktiviert die jeweilige Applikation durch einen upcall 7 8

Kooperativer Fadenwechsel Präemptiver Fadenwechsel Betriebssystem Anwendungen <app1> <app2> <kickoff> <kickoff'> <> <schedule> upcall app1 Legende 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) upcall app2 Kontrollflusserzeugung: Kontrollflusszerstörung: explizite (Re-)Aktivierung: implizite (Re-)Aktivierung: CPU-Entzug durch Zeitgeberunterbrechung die Unterbrechung ist nur ein impliziter Aufruf Behandlungsroutine kann aufrufen <app1> <app2> <> <handler> sti() Achtung: So geht es normalerweise nicht, denn trifft eine Scheduling-Entscheidung. Bei den notwendigen Datenstrukturen ist Unterbrechungssynchronisation zu beachten! i 9 10 Arbeitsteilung Agenda Scheduler Betriebssystemfäden 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 Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung laufende Faden ist immer von der Entscheidung mit betroffen - dazu muss der laufende Faden jederzeit greifbar sein - vor der Umschaltung ist ist der laufende Faden zu vermerken ein ausgewählter neuer Faden wird dem Dispatcher übergeben Dispatcher setzt die Entscheidungen durch und schaltet Fäden (mit Hilfe von ) um Ablaufplanung Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Zusammenfassung 11 12

Ablaufplanung: Einteilung... nach der Betriebsmittelart 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 13 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 14 nach der Betriebsart nach dem Zeitpunkt 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 online scheduling dynamisch, während der eigentlichen Ausführung interaktive- und Stapelsysteme, aber auch weiche Echtzeitsysteme offline scheduling statisch, vor der eigentlichen Ausfü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 15 16

nach der Vorhersagbarkeit nach dem Kooperationsverhalten 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 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 17 18 nach der Rechnerarchitektur nach der Ebene 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 long-term scheduling [s min] kontrolliert den Grad an Mehrprogrammbetrieb Benutzer Systemzugang gewähren, Programme zur Ausführung zulassen Prozesse dem medium- bzw. short-term scheduling zuführen medium-term scheduling [ms s] als Teil der Ein-/Auslagerungsfunktion Programme zwischen Vorder- und Hintergrundspeicher hin- und herbewegen swapping: auslagern (swap-out), einlagern (swap-in) short-term scheduling [μs ms] regelt die Prozessorzuteilung an die Prozesse ereignisgesteuerte Ablaufplanung: Unterbrechungen, Systemaufrufe, Signale Blockierung bzw. Verdrängung des laufenden Prozesses 19 20

Scheduling-Kriterien 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. 21 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 22 Kriterien bei typischen Betriebsarten Agenda allgemein (unabhängig von der Betriebsart) Gerechtigkeit Lastausgleich Stapelsysteme Durchsatz Durchlaufzeit Prozessorauslastung interaktive Systeme Antwortzeit (Proportionalität Bearbeitungsdauer entspricht Erwartung) Echtzeitsysteme Dringlichkeit Termineinhaltung Vorhersagbarkeit Betriebssystemfäden Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Ablaufplanung Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Zusammenfassung 23 24

Linux s Multi-Level Queues sind die Linux Kernel Abstraktion für Quantum Priorität (0 ist hoch, 139 niedrig) UNIX Prozesse: ein Kontrollfaden in einem Adressraum 0 Linux Threads: 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 Abarbeitung fest groß (800ms) normal (100ms) 1 2 3 100 101 138 25 klein (5ms) 139 Abarbeitung 26 Multi-Level Queues Multi-Level Queues Abarbeitung Quantum Priorität (0 ist hoch, 139 niedrig) 0 1 fest 2 3 groß 100 (800ms) Echtzeit-s 101 normal SCHED_FIFO nie verdrängt (100ms) SCHED_RR verdrängt, wenn feste Zeitscheibe abgelaufen Echtzeit-s 138 verdrängen jeden anderen normalen. Durch die einfache Strategie kann das Verhalten in einer weichen klein Echtzeitumgebung 139 recht gut vorhergesagt werden. (5ms) Abarbeitung 27 Abarbeitung Quantum Priorität (0 ist hoch, 139 niedrig) Gewöhnliche 0 s effective_prio = static_prio + dynamic_prio 1statische Priorität entspricht dem nice value (-19 bis +20) fest dynamische Priorität wird geschätzt (-5 bis +5) (interaktive 2 Prozesse werden bevorzugt) kernel_prio = effective_prio + 120 3 groß (800ms) normal (100ms) klein (5ms) 100 101 138 139 Abarbeitung 28

Active und Expired Active und Expired active expired active expired Quantum verbraucht Quantum verbraucht 29 30 Bereit-Listen im SMP Betrieb Lastausgleich active expired oder active expired active expired active expired List List active expired Load Balancers active expired active expired 1 2 3 CPU 1 2 3 1 2 3 31 32

Fazit Linux Agenda interactive, probabilistic, online, preemptive, multiprocessor CPU scheduling Bevorzugung interaktiver Prozesse schnelle Reaktion auf Eingaben gleichzeitig Fortschrittgarantie für CPU-lastige Prozesse Betriebssystemfäden Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung O(1) bei allen Operationen des Scheduler Einfügen, Entfernen, Scheduling-Entscheidung Mehrprozessorunterstützung Mehrere Bereit-Listen: Parallele Scheduler Ausführung Keine Idle-Phasen (war ein Problem beim alten Linux Scheduler) CPU-Lastausgleich Ablaufplanung Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Zusammenfassung 33 34 Prozesse und Fäden in Win NT Prozesse und Fäden in Win NT Prozess: Umgebung und Adressraum für Fäden Stapel + Registersatz (1 je Faden) Prozess Register T 1 Stapel T 1 Register T 2 Stapel T 2 Register T 3 Stapel T 3 Register T 4 Stapel T 4 Ein Win32 Prozess enthält immer mindestens einen Faden Faden (engl. thread): Code ausführende Einheit Code Fadenimplementierung wird durch den NT Systemkern erbracht Usermode-Threads möglich ( Fibers ), aber unüblich Gobale und statische Daten Datenzugriffe Threads bekommen vom Scheduler Rechenzeit zugeteilt 35 36

Der NT-Scheduler Zeitscheiben (Quantum) 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 in HG-Prozess Thread in VG-Prozess Kurze Quantumwerte Variabel 6 12 Fix 18 18 Lange Quantumwerte Variabel 12 24 Fix 36 36 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 Aktiver Thread in VG-Prozess 18 18 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 36 36 37 38 Prioritätsklassen, relative Threadpriorität Prioritäten: Variable Priorities 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 Variable Priorities (1-15) Scheduler verwendet Strategien, um wichtige Threads zu bevorzugen - Quantum-Stching (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 39 40

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 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) 41 42 Prioritätänderung nach einem Boost Quantum Priorität Der Balance-Set-Manager Etwa alle 3-4 Sekunden erhalten bis zu 10 benachteiligte Threads für zwei Zeitscheiben die Priorität 15 Implementierung der Fortschrittsgarantie Mausnachricht: Anhebung der Priorität um 6 verdrängt (vor Quantumende) Basispriorität aktiv wartend aktiv bereit aktiv bereit Zeit 43 44

Auswahl des nächsten Threads (SMP) Auswahl des nächsten Threads (SMP) Ziel: Problem: gerechtes RoundRobin bei max. Durchsatz Cache-Effekte Algorithmus: CPU n ruft FindReadyThread() auf Wähle höchstpriore, nicht-leere Warteschlange Affinität (Zuordnung von CPUs zu Thread): hard_affinity: ideal_processor: soft_affinity: last_run: Feste Zuordnung explizit durch SetThreadAffinity() zugewiesen Ideale Zuordnung implizit bei Erzeugung zugewiesen ( zufällig ) änderbar mit SetThreadIdealProcessor() Letzte CPU, auf welcher der Thread lief intern vom Scheduler verwaltet Zeitpunkt der letzten Zuweisung zu einer CPU intern vom Scheduler verwaltet 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 45 46 Auswahl des nächsten Threads (SMP) CPU 0 CPU 1 CPU 2 CPU 3 Auswahl des nächsten Threads (SMP) CPU 0 CPU 1 CPU 2 CPU 3 KiDispatcherReadyListHead 31 8 FindReadyThread() ideal proc.: 0 soft affinity: 0 last run: 10 ms ideal proc.: 1 soft affinity: 1 last run: 20 ms ideal proc.: 3 soft affinity: 2 last run: 20 ms KiDispatcherReadyListHead 31 8 FindReadyThread() ideal proc.: 0 soft affinity: 0 last run: 10 ms ideal proc.: 1 soft affinity: 1 last run: 20 ms ideal proc.: 3 soft affinity: 2 last run: 20 ms 0 0 primary candidate 47 48

Auswahl des nächsten Threads (SMP) CPU 0 CPU 1 CPU 2 CPU 3 Änderungen in Windows 2003 Eine ReadyQueue pro CPU Algorithmus: CPU n ruft FindReadyThread() auf KiDispatcherReadyListHead 31 8 FindReadyThread() ideal proc.: 0 soft affinity: 0 last run: 10 ms ideal proc.: 1 soft affinity: 1 last run: 20 ms ideal proc.: 3 soft affinity: 2 last run: 20 ms 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 0 selected candidate 49 50 Fazit Windows NT Agenda 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 Interaktive Threads können bevorzugt werden Insbesondere GUI/Multimedia-zentrierte Threads Weitere Verbesserungen für SMP in Windows 2003 Betriebssystemfäden Motivation kooperativer Fadenwechsel präemptiver Fadenwechsel Arbeitsteilung Ablaufplanung Grundbegriffe und Klassifizierung unter Linux unter Windows (XP/2000/2003) Zusammenfassung 51 52

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 53