2. Prozesse. 2.1 Prozesse als zentrales. Überblick. Prozess (process, task) ist definiert durch. Prozess ist. Ergebnisse. Interne. Daten.

Ähnliche Dokumente
Prozesse und Scheduling unter Linux (Kernel 2.4.XX)

2. Prozesse. 2.1 Prozesse als zentrales Konzept

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

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

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

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

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

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

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

Threads Einführung. Zustände von Threads

U9-3 Vergleich von Thread-Konzepten. U9-2 Motivation von Threads. U9-3 Vergleich von Thread-Konzepten (2) U9-1 Überblick

Dämon-Prozesse ( deamon )

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Windows 2000 Scheduler

Softwaresysteme I Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2007 U9.fm

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

Teil 3: Konzepte von Betriebssystemen

POSIX-Threads. Aufgabe 9 SP - Ü U10.1

Threads. Foliensatz 8: Threads Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

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

Lösung von Übungsblatt 8

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

Der Scheduler von Windows 2000 Konzepte und Strategien

U8 POSIX-Threads U8 POSIX-Threads

U8-1 Motivation von Threads. U8-2 Vergleich von Thread-Konzepten. U8-2 Vergleich von Thread-Konzepten (2) Motivation

Betriebssysteme Betriebssysteme und. Netzwerke. Netzwerke Theorie und Praxis

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes

Prozesse und Scheduling

Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen)

Threads and Scheduling

Shared-Memory Programmiermodelle

Betriebssysteme Kapitel E : Prozesse

e) Welche Aussage zu Speicherzuteilungsverfahren ist falsch?

Proseminar KVBK : Scheduler unter Linux

Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet.

Rechnerarchitektur und Betriebssysteme (CS201): Frühe Betriebssysteme, geschützte CPU-Befehle, CPU-Modus

Modul B-PRG Grundlagen der Programmierung 1

Prozesse: Prozesskontrollblock, -zustände, -umschaltung

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Übung zu Grundlagen der Betriebssysteme. 7. Übung

5. Foliensatz Betriebssysteme und Rechnernetze

Markus Klußmann, Amjad Saadeh Institut für Informatik. Pthreads. von Markus Klußmann und Amjad Saadeh. Pthreads

6.Vorlesung Betriebssysteme Hochschule Mannheim

> Übung Betriebssysteme Globalübung 3 Michel Steuwer Wintersemester 2012/13

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Round-Robin Scheduling (RR)

Technische Informatik 1

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

B.5 Prozessverwaltung B.5. Prozessverwaltung Prof. Dr. Rainer Manthey Informatik II 1

Konzepte und Methoden der Systemsoftware. Aufgabe 1: Multi-Feedback-Scheduling. SoSe bis P

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

Prozesszustände (1a)

2Binden 3. und Bibliotheken

Prozesse und Threads. Prozess. Trace. Einfachstes Prozessmodell. Traces

Grundlagen Rechnerarchitektur und Betriebssysteme

Der Scheduler von Windows Konzepte und Strategien

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

Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger

Prozesse and Threads WS 09/10 IAIK 1

Systemprogrammierung

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

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

Inhaltsverzeichnis. 2.4 Thread-Systeme. 2.1 Was ist ein Prozess? 2.2 Scheduling. 2.3 Interprozesskommunikation

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

Prozesse und Logs Linux-Kurs der Unix-AG

Prozesse und Logs Linux-Kurs der Unix-AG

Freispeicherverwaltung

Systeme 1. Kapitel 5. Scheduling

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

Betriebssysteme. Tutorium 2. Philipp Kirchhofer

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

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

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Wolfram Burgard

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

Aufgabe 9: recgrep rekursive, parallele Suche (letzte Aufgabe)

Leichtgewichtsprozesse

Leichtgewichtsprozesse

U6-1 Organisatories. U6-2 Motivation von Threads. U6-3 Vergleich von Thread-Konzepten. Organisatorisches

Betriebssystem. Arten von Betriebssystemen. Zweiteilung des Betriebssystems. 5. Kapitel Systemsoftware: Prozesse und Prozesswechsel

Besprechung Aufgabe 5 (crawl) POSIX-Threads. Problem: UNIX-Prozesskonzept ist für viele heutige Anwendungen unzureichend

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer

Übung zu Grundlagen der Betriebssysteme. 10. Übung

Was ist ein Prozess?

Konzepte und Methoden der Systemsoftware. Aufgabe 1: Polling vs Interrupts. SoSe bis P

6. Juni VO Prüfung Betriebssysteme. Ges.)(100) 1.)(35) 2.)(20) 3.)(45) Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

5 Kernaufgaben eines Betriebssystems (BS)

Grundlagen der Betriebssysteme

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

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Klausur zur Vorlesung Grundlagen Betriebssysteme und Systemsoftware

Kapitel III. Prozessverwaltung. VO Betriebssysteme

Linker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft

4. Übung - Rechnerarchitektur/Betriebssysteme

Musterlösung Prüfung WS 01/02

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Maren Bennewitz

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur

8. Foliensatz Betriebssysteme

Transkript:

2. Prozesse Überblick 2.1 Prozesse als zentrales Konzept 2.2 Grundoperationen mit Prozessen 2.3 Thread-Modell 2.4 Beispiel für Threadbibliotheken: Pthreads 2.5 Zuteilungsverfahren 2.6 Prozesse und Scheduling in Linux 2.7 Prozesse und Scheduling in Windows O. Kao Betriebssysteme 2-1 1 2.1 Prozesse als zentrales Konzept Prozesse = Zentrales BS Konzept Eingabeparameter Programm Dynamische Objekte, die sequentielle Aktivitäten in einem System repräsentieren Prozess = in Ausführung befindliches Programm Prozess (process, task) ist definiert durch Adressraum Verarbeitungsvorschrift (Programm) Aktivitätsträger, der die Verarbeitungsvorschrift ausführt, in der Regel als Thread bezeichnet Prozess ist Interne Virtueller Rechner spezialisiert zur Daten Ausführung eines bestimmten Programms Beschreibungseinheit für System- und Anwendungssoftware Ergebnisse O. Kao Betriebssysteme 2-2 2

Prozesszustandsmodell Einfachstes Prozessmodell umfasst zwei Zustände Laufend (running): Prozess wird aktuell auf dem realen Prozessor ausgeführt Nicht-laufend (not-running): Prozess wird aus verschiedenen Gründen nicht ausgeführt Add Nicht-Laufend Dispatchen Laufend Exit Suspendieren Notwendige Komponenten zur Realisierung eines Prozesszustandsmodells Datenstrukturen zur Beschreibung des aktuellen Prozesszustands Mechanismus zur Speicherung der Informationen / Abrufen der gespeicherten Informationen Warteschlange zur Verwaltung wartender Prozesse O. Kao Betriebssysteme 2-3 3 Warteschlange und Umschaltmechanismus Dispatcher BS-Komponente zur Verwaltung des realen Prozessors, zuständig für Verdrängung von Prozessen und zum Laden neuer Prozesse Zusammenarbeit mit dem Scheduler, der für die Auswahl des nächsten Prozesses zuständig ist Modellierung Warteschlange mit Pointern auf Datenstrukturen Add Dispatchen Exit CPU Suspendieren Verhalten des Dispatchers Dem vom Scheduler ausgewählten Prozess wird die CPU zugeordnet Dispatcher lädt die notwendigen Informationen Prozessunterbrechung Prozess wird in die Warteschlange einsortiert Prozess terminiert Prozess verlässt das System O. Kao Betriebssysteme 2-4 4

Datenstruktur Prozesskontrollblock (Process Control Block, PCB) Datenstruktur zur Implementierung von Prozessen in BS Verwaltungstechnischer Repräsentant des Prozesses in der Maschine Enthält ein Abbild des Registersatzes des realen Prozessors, das den aktuellen Prozesszustand definiert Generell umfasst PCB 3 Kategorien von Informationen 1. Prozessidentifikation Eindeutiger numerischer Identifikator des Prozesses (ProcessID), Identifikator des Elternprozesses, Identifikation des Benutzers 2. Prozesszustandsinformationen Bereich für die aktuellen Registerwerte Zustandsvariable (Prozesszustand, d.h. Kontroll-/Statusregister) Menge der Register mit Statusinformationen wird oft im sog. Programmstatuswort (PSW) gespeichert O. Kao Betriebssysteme 2-5 5 Prozesskontrollinformationen in PCB Fortsetzung der Informationen in PCB 3. Prozesskontrollinformationen dienen dem BS, aktive Prozesse zu kontrollieren und koordinieren Prozesszustand (laufend, blockiert, bereit, ) Information über angeforderte/zugeteilte Betriebsmittel, insbesondere E/A-Status-Informationen Liste der belegten E/A-Geräte Liste der geöffneten Dateien, Eltern-Kind-Relationen Scheduling-bezogene Zustandsinformationen wie Priorität, Wartezeit, zugeteilter Prozessor in MIMD-Systemen, Signale oder Nachrichten zwischen unabhängigen Prozessen Ereignisse, auf die gewartet wird, Accounting Informationen: Angaben über genutzte CPU-Zeit, reale Zeit seit Aktivierung, Zeitlimits, O. Kao Betriebssysteme 2-6 6

Beispiel: Anzeige von Statusinformationen mit PS okao@benjamin-sisko:~>ps -aux USER PID %CPU %MEM VSZ RSS STAT START TIME COMMAND root 1 0.0 0.0 1360 368 S Aug10 1:05 init [5] --init root 2 0.0 0.0 0 0 SW Aug10 0:02 [keventd] root 599 0.0 0.0 1540 360 S Aug10 3:47 syslogd -m 0 root 1488 0.0 0.0 1472 40 S Aug10 0:02 /usr/sbin/automou daemon 1677 0.0 0.0 1492 52 S Aug10 0:00 /usr/sbin/atd root 1697 0.0 0.0 3152 444 S Aug10 0:16 /usr/sbin/sshd root 1716 0.0 0.0 2236 380 S Aug10 0:00 xinetd -stayalive root 1744 0.0 0.0 4476 412 S Aug10 3:46 sendmail: accepti root 1782 0.0 0.0 1496 192 S Aug10 0:39 crond xfs 23483 0.0 0.3 10396 7392 S Aug10 0:23 xfs -droppriv -da root 23610 0.0 0.0 1344 112 S Aug10 0:00 /sbin/mingetty tt root 23615 0.0 0.0 26840 340 SN Aug10 0:00 in.identd -e -n root 24318 0.0 0.0 2416 564 S Aug10 0:00 /usr/bin/kdm -nod nscd 1024 0.0 0.0 13412 1072 S Aug31 1:06 /usr/sbin/nscd jomu 22202 0.2 13.3 417096 275416 SN 16:24 0:22 java -Xmx256MB -c jomu 22216 87.2 13.3 417096 275416 RN 16:25 157:32 java -Xmx256MB -c jomu 22218 0.1 13.3 417096 275416 SN 16:25 0:15 java -Xmx256MB -c root 23414 0.0 0.0 6480 1656 S 17:05 0:00 /usr/sbin/sshd jomu 23416 0.0 0.0 6712 1996 S 17:05 0:00 /usr/sbin/sshd jomu 23419 0.0 0.0 3372 1736 S 17:05 0:00 -tcsh okao 27488 0.5 0.0 3392 1772 S 19:25 0:00 -tcsh okao 27519 11.0 0.0 2572 648 R 19:25 0:00 ps -aux O. Kao Betriebssysteme 2-7 7 Verwaltung der PCBs Zustand Zeiger ProcessID Dynamische verkettete Liste Restliche Informationen P1 P6 P4 P3 P2 P5 NULL PCB PCB-Baumstruktur P1 Array von PCBs P2 P3 P1 P3 P2 P4 P5 P6 P4 P5 P6 O. Kao Betriebssysteme 2-8 8

Effizienzsteigerung durch Teilmengenbildung Aufspaltung der Prozessliste in Teillisten von PCBs mit einem identischen Attribut, z.b. bzgl. Prozesszustand (siehe Grafik) oder Priorität Bereite Prozesse Start Ende P1 P9 P6 P19 P13 P5 NULL Blockierte Prozesse (E/A-Gerät 1) Start Ende P3 P11 P4 NULL Blockierte Prozesse (E/A-Gerät 2) Start Ende P2 P7 P10 P8 P12 NULL O. Kao Betriebssysteme 2-9 9 O. Kao Betriebssysteme 2-10 Grad der Multiprogrammierung Auslastung der CPU Annahmen Ein Prozess verbringt einen Anteil p seiner Zeit mit Warten auf E/A- Operationen Wahrscheinlichkeit p n, dass n Prozesse gleichzeitig auf Ende der E/A- Operationen warten Ausnutzung der CPU: A = 1 p n n = Grad der Multiprogrammierung (Degree of Multiprogramming) Modellierung der Multiprogrammierung 10

O. Kao Betriebssysteme 2-11 Prozess Erzeugen Blockiert Suspendiert Prozess Beenden Bereit Suspendiert Swap-out Swap-in Blockiert Swap-out Swap-in Ready Beendet Block Retire Resign Bereit Laufend Assign Add Initiiert Prozess Umschalten Erweitertes Zustandsmodell (Grafische Darstellung) 11 Erweitertes Modell für Prozesszustände Ein Prozess kann sich abhängig vom aktuellen Status in unterschiedlichen Zuständen befinden Initiiert: Prozess erzeugt, hat aber noch keine Betriebsmittel und bewirbt sich daher noch nicht um den Prozessor Bereit (Ready): Der Prozess hat alle notwendigen Betriebsmittel und wartet auf die Zuteilung des/eines Prozessors Rechnend, Laufend (Running): Der Prozess ist im Besitz des physikalischen Prozessors und wird aktuell ausgeführt Blockiert, Wartend (Waiting): Der Prozess wartet auf die Erfüllung einer Bedingung, z.b. Beendigung einer E/A-Operation und bewirbt sich derzeit nicht um den/einen Prozessor Bereit suspendiert: Der Prozess hat alle Betriebsmittel außer CPU und Hauptspeicher Blockiert suspendiert: Dem Prozess fehlt CPU, Speicher und wartet auf das Ende mindestens einer blockierenden Operation Beendet (Terminated): Zugeteilte Betriebsmittel freigegeben O. Kao Betriebssysteme 2-12 12

Zustandsübergänge Add Neu erzeugter Prozess kommt in Klasse bereit Assign Kontextwechsel und Prozessorzuteilung Block Aufruf einer blockierenden E/A-Operation oder Synchronisation Prozessor wird entzogen Ready Blockierende Operation beendet, Prozess wartet auf erneute Prozessorzuteilung Resign Entzug des Prozessors, z.b. aufgrund eines Timer- Interrupts Zeitscheibe abgelaufen Swap-Out Prozess (blockiert, bereit) wird ausgelagert bzw. Hauptspeicher wird erst gar nicht zugeteilt Swap-In Prozessübertragung aus sekundärem in Hauptspeicher Retire Prozess beendet, alle Ressourcen wieder freigegeben O. Kao Betriebssysteme 2-13 13 2.2 Grundoperationen mit Prozessen Statische Betriebssysteme Alle Prozesse sind a-priori bekannt und definiert Prozesse werden für eine bestimmte Anwendung realisiert Beschreibende Datenstrukturen (PCB) werden von einem Konfigurationsprogramm einmalig erzeugt Dynamische Betriebssysteme Neue Prozesse können während der Laufzeit hinzukommen bzw. terminieren Dies wird mit folgenden Kernoperationen realisiert create_process(id, initialvalues) // Anlegen des Prozesskontrollblocks // Initialisierung des Prozesses delete_process(id, finalvalues) // Rückgabe der Endwerte // Löschen des Kontrollblocks O. Kao Betriebssysteme 2-14 14

Ereignisse zur Erzeugung von Prozessen Vier Ereignisse zur Erzeugung von Prozessen 1. Initialisierung des Systems: Meistens Hintergrundprozesse (Daemons) wie Terminaldienst, Mailserver, Webserver, 2. Prozesserzeugung durch andere Prozesse: Aufteilung des Prozesses in mehrere nebenläufig oder parallel auszuführende Aktivitäten, die als eigene Prozesse initialisiert werden 3. Benutzerbefehle zum Starten eines Prozesses (Kommandozeile oder grafische Oberfläche) 4. Initialisierung einer Stapelverarbeitung (bei Mainframes) Technischer Ablauf in allen Fällen gleich Bestimmter Prozess analysiert die Eingabe (z.b. von Benutzern oder Konfigurationsdateien) Prozess sendet einen Systemaufruf zur Prozesserzeugung und teilt dem BS mit, welches Programm darin ausgeführt werden soll O. Kao Betriebssysteme 2-15 15 Einzelne Schritte der Prozessgenerierung Folgende Schritte werden i.a. bei einem Prozess durchlaufen Erzeugung von ProcessID und Eintrag in die primäre Prozesstabelle Zuordnung von Speicherplatz Falls Informationen über Speicherbedarf mitgeliefert OK Sonst werden Defaultwerte abhängig vom Prozesstyp eingesetzt Initialisierung vom entsprechenden PCB Eintrag der ProcessID und der Eltern-ProcessID Alle Zustandsinformationen mit Nullen belegt Programmzähler und Stapelzeiger werden auf Anfangsadresse gesetzt In Abhängigkeit der angeforderten Ressourcen und Zuteilungsstatus wird der Prozesszustand festgelegt Priorität auf Default-Wert, üblicherweise sehr niedrig Setzen der erforderlichen Verknüpfungen, z.b. Integration des PCB in die Schedulingwarteschlangen O. Kao Betriebssysteme 2-16 16

Prozesserzeugung bei UNIX und Windows Systemaufruf bei UNIX ist fork Exakte Kopie des aufrufenden Prozesses wird erzeugt mit gleichen Umgebungsvariablen, Speicherabbild, geöffneten Dateien Üblicherweise ruft der Kindsprozess einen Befehl wie execve auf, um das Speicherabbild zu wechseln und ein neues Programm auszuführen Systemaufruf bei Windows ist CreateProcess mit 10 Parametern wie auszuführendes Programm, Parameter, Sicherheitseinstellungen, Priorität, Spezifikation über die zu erzeugenden Fenster, Zeiger auf Datenstruktur für die Prozessdaten In beiden Systemen haben Vater- und Kindprozess getrennte Adressräume Speicheränderungen z.b. vom Kindprozess sind für den Vater nicht sichtbar Kommunikation über gemeinsame Dateien allerdings möglich O. Kao Betriebssysteme 2-17 17 Manpage zu execve (Ausschnitt) BEZEICHNUNG execve - zum Ausführen von Programmen SYNTAX #include <unistd.h> int execve (const char *dateiname, const char * argv[], const char *envp[]); BESCHREIBUNG execve() führt das Programm aus, auf das dateiname zeigt. dateiname muss entweder ein binäres ausführbares Programm oder ein Shell-Skript ( ) sein. execve() kehrt beim Erfolg nicht zurück und der Text, die Daten und den Stapel des aufrufenden Prozesses wird durch das geladene Programm überschrieben. Das aufgerufene Programm erbt die PID des aufrufenden Prozesses, sowie jeden offenen Dateideskriptor, der zur Ausführung nicht geschlossen wurde. Signale bezüglich des elterlichen Prozesses werden gelöscht. Falls das aktuelle Programm ptraced wird, wird nach erfolgreichem execve() ein SIGTRAP gesendet. RÜCKGABEWERT Bei Erfolg kehrt execve() nicht zurück, bei Fehlern wird -1 zurückgegeben und errno wird dem entsprechend gesetzt. O. Kao Betriebssysteme 2-18 18

Prozesshierarchien Erzeugen die Kindprozesse weitere Prozesse (Kindkind prozesse), so entsteht eine Prozesshierarchie UNIX: Vaterprozess und Kindprozesse bilden eine Familie, d.h. Signale werden an alle Prozesse in der Familie verteilt und jeder Prozess entscheidet über Annahme und Verwertung Bei UNIX-Initialisierung wird init gestartet und erzeugt die Terminals (Anzahl definiert in Konfigurationsdatei) Nach Anmeldung erzeugen die Terminals shell-prozesse Shells erzeugen neue Prozesse bei Eingabe von Befehlen, Alle Prozesse gehören zu einem Baum mit init als Wurzel Windows: kein Konzept einer Prozesshierarchie Vaterprozess kann Kindprozess über ein Handle steuern Allerdings darf der Handle an andere Prozesse weitergegeben Prozesshierarchie wird außer Kraft gesetzt O. Kao Betriebssysteme 2-19 19 Typische Prozesshierarchie bei UNIX O. Kao Betriebssysteme 2-20 20

Prozessumschaltung (Process Switching) Aktuell aktiver Prozess wird aus dem Zustand laufend verdrängt Bereiter Prozess wechselt in den Zustand Laufend Notwendige Aktionen Sicherung des alten Kontextes Aktualisierung des PCBs und Einordnung in Warteschlange Laden des Kontextes des neuen Prozesses Aktualisierung des PCBs und der Speicherinformationen Aktualisierung des Kontextes durch Anpassung aller Verknüpfungen Auswahlprozess nahe Umschaltzeitpunkt unter dynamischer Auswertung von z.b. Prozessnummer (zyklisches Umschalten), Fairness, Priorität, O. Kao Betriebssysteme 2-21 21 Umschalttechniken Einfachste Umschaltform durch direkten Sprung Umschaltzeitpunkt und -ziel werden in Quellcode einprogrammiert Diese Minimallösung erlaubt effiziente Umschaltvorgänge und wird vor allem bei Realzeitsystemen eingesetzt Allerdings wenig flexibel und nur in Spezialfällen einsetzbar L11 P1 P2 jump L21 L21 L12 jump L22 L22 jump L11 jump L12 Bedingtes Umschalten Im Ablauf eines Prozesses können Situationen auftreten, welche zu einer Blockierung der Prozessausführung führen Eine solche Situation wird durch Bedingungsvariable ausgedruckt Falls die Bedingung erfüllt ist, wird umgeschaltet O. Kao Betriebssysteme 2-22 22

Automatisches Umschalten Einfügen von Umschaltstellen ist oft nicht möglich/sinnvoll Automatisches Umschalten Programme unverändert, das Umschalten wird von außen ausgelöst Wecker (Timer): E/A-Gerät mit zwei Funktionen Vorgabe einer Frist, z.b. Länge der Zeitscheibe Initialisierung einer Unterbrechung bei Fristablauf Sofern Unterbrechungen nicht unterbunden, wird beim Signal des Weckers ein automatischer Umschaltvorgang durchgeführt Umschalten im Allgemeinen wesentlich komplexer Unbekannter Umschaltzeitpunkt Merken der Fortsetzstelle Unbekanntes Umschaltziel Auswahl des nächsten Prozesses Überschneidung der benötigten Register, Attribute, Rettung des Kontextes des alten Prozesses und Laden des Kontextes des neuen Prozesses erforderlich O. Kao Betriebssysteme 2-23 23 Merken der Fortsetzstelle Vor der Umschaltung wird die Adresse des nächsten auszuführenden Befehls in einer speziellen Variable ni des PCB (next instruction) gespeichert L: SWITCH Store address L in ni in PCB p_run.ni :=L of the running process p_run Jump(p_next.ni) Was passiert, wenn der Prozess ausgelagert und anschließend in einen anderen Speicherbereich geladen wird? Befehlszähler gibt immer eine relative Adresse an Herstellung der Verknüpfung mit dem aktuellen Speicherbereich über Basis-, Index- und ähnliche Register Ermittlung der neuen Position der Fortsetzstelle im Speicher durch Laden des Kontextes und Aktualisierung der Registerwerte O. Kao Betriebssysteme 2-24 24

Leerlaufproblem Ist ein Wartezustand vorhanden, so können alle Prozesse in diesen Zustand übergehen Sonderfall bei Prozessumschaltung, da kein Prozess verdrängt werden muss Leerlaufprozess (idle process) Elegante Lösung zur Integration dieses Falls in den bestehenden Mechanismus mit folgenden Eigenschaften Zyklischer Prozess, der nicht angehalten werden darf Geringste Priorität, so dass eine Verdrängung jederzeit möglich ist Beispiele Leere Schleife while (TRUE) { } Dynamischer Stopp Spezialbefehl, der keinen Speicherzugriff durchführt und auf externe Signale reagiert Einlagerung nützlicher Aufgaben wie Prüfungen, Speicherbereinigung, O. Kao Betriebssysteme 2-25 25 Moduswechsel (Mode Switching) Die meisten Prozessoren unterscheiden aus Sicherheitsgründen zwischen Systemmodus (Kernmodus): Das BS besitzt die CPU und hat uneingeschränkten Zugriff auf alle Ressourcen Benutzermodus: Prozessor ist einer Anwendung zugeordnet, kritische Zugriffe können gesteuert/gesperrt werden Aktueller Modus wird im Programmstatuswort festgehalten O. Kao Betriebssysteme 2-26 26

Moduswechsel (Mode Switching) Übergang Benutzermodus Systemmodus z.b. durch Unterbrechung Sicherung des Kontextes des laufenden Prozesses, vor allem der Informationen, die durch eine Unterbrechungsbehandlung verändert werden können Sprung zum Anfang der Unterbrechungsbehandlungsroutine Änderung des Systemmodus Nach Behandlung der Unterbrechung wird unter Umständen wieder der alte Prozess ausgeführt (Bei Prozesswechsel kommt immer ein neuer Prozess zur Ausführung!) O. Kao Betriebssysteme 2-27 27 Prozessbeendigung Normales Beenden (freiwillig) Benutzer beendet Prozess oder Prozess ist abgearbeitet Aufruf von exit() bzw. ExitProcess() Aktion: Freigabe aller Ressourcen, Löschen temporärer Dateien Bedienungsfehler, z.b. falsche Parameter Einfache Programme beenden sich sofort Komplexe Programme fordern zur neuen Parametereingabe auf Schwerwiegender Fehler aufgetreten (Zugriff auf ungültige Adressen, unzulässige Befehle, Division durch 0, ) In einigen BS kann sich der Prozess um das Problem kümmern und die Verarbeitung mit einer Meldung unterbrechen Bei anderen BS terminiert der Prozess evtl. mit einer Fehlerbeschreibung Ein Prozess beendet anderen Prozess (Berechtigung vorausgesetzt) mit Aufrufen wie kill() oder TerminateProcess() O. Kao Betriebssysteme 2-28 28

2.3 Thread-Modell Das Prozess-Konzept bietet 2 voneinander unabhängige Einheiten 1. Einheit zur Ressourcenbündelung: ein Prozess verfügt über (Virtuellen) Adressraum Beschreibende Datenstrukturen wie PCB Quelltexte und Daten Weitere Betriebsmittel wie E/A-Geräte, Dateien, Kindprozesse 2. Ausführungseinheit, der der reale Prozessor zugeteilt wird Ausführungsablauf mit einem oder mehreren Programmen Verzahnte Ausführung mit anderen Prozessen Zustände (bereit, laufend, blockiert, terminiert, ) Priorität Bezeichnungen Bündelungseinheit (1): Prozess (Task) Ausführungseinheit (2): Leichtgewichtsprozess (Thread ) O. Kao Betriebssysteme 2-29 (Wiederholung KMS) 29 Definition eines Threads Thread: Teil eines Prozesses mit folgenden Eigenschaften Keine vollständige Prozesstabelle wie der ursprüngliche Prozess Operiert im selben virtuellen und realen Adressraum Entspricht einem separaten Kontrollfluss dieses Prozesses Ein Thread besitzt eine eigene Threadtabelle mit Separatem Befehlszähler Eigenem Code- und Datenteil Register und Stapel (vollständige Verknüpfungsumgebung) Zustand Threads erweitern das Prozessmodell um die Möglichkeit der nebenläufigen Ausführung mehrerer, im hohen Grad voneinander unabhängiger Kontrollflüsse O. Kao Betriebssysteme 2-30 (Wiederholung KMS) 30

Zusammenhang Prozesse und Threads Multi-Threaded: mehrere Threads innerhalb eines Prozesses Single-Threaded: ein Thread pro Prozess (klassisches Prozessverständnis) Prozesse Mac OS Ältere UNIX-Versionen Windows NT Solaris Mehrere Prozesse, aber ein Thread/Prozess MS-DOS Ein Prozess, ein Thread Mehrere Prozesse, mehrere Threads/Prozess Ein Prozess, mehrere Threads/Prozess Java run time engine Threads O. Kao Betriebssysteme 2-31 (Wiederholung KMS) 31 Single- vs. Multi-Threaded Prozessmodell Zur Prozessausführung benötigte Daten (Wiederholung KMS) Single Threaded Programm Statische Daten Dynamische Daten Niedrige Adresse Hohe Adresse Multi Threaded Programm Statische Daten Dynamische Daten Stapel 1 Stapel n Komponenten PCB Stapel Laufzeitkeller Adressraum Adressraum Thread Thread CB PCB Stapel Thread Thread CB Stapel Single Threaded Multi Threaded O. Kao Betriebssysteme 2-32 32

Realisierung von Multithreading Verarbeitung startet üblicherweise mit einem einzigen Thread Thread_create(): dynamische Erzeugung weiterer Threads Funktionsparameter: auszuführende Prozedur und Startparameter Rückgabewert: Threadidentifikator Thread_yield(): Freiwillige Abgabe der CPU Kein Uhr-Interrupt vorhanden Für die Aufteilung der Rechenzeit zwischen der Threads ist der Entwickler zuständig Synchronisationsaufrufe wie thread_wait() legen eine Ausführungsreihenfolge fest Thread_exit() beendet einzelne Threads Wichtig Threads operieren im selben Adressraum kein Schutz durch das BS Konzepte wie fork() oder der Umgang mit gemeinsamen Datenstrukturen können zu Problemen führen Sorgfältiges und durchdachtes Design notwendig O. Kao Betriebssysteme 2-33 (Wiederholung KMS) 33 Vorteile der multithreaded Programmierung Besseres Antwortverhalten bei interaktiven Anwendungen: Teile der Anwendung können weiter laufen / auf Benutzeranfragen reagieren, obwohl ein Teil durch E/A-Operationen blockiert ist BM-Teilung: Effiziente, flexible Nutzung zugeteilter Ressourcen Zeitersparnis bei grundlegenden Threadoperationen Allokierung von Speicher und anderen BM ist zeitaufwendig Erzeugen und wechseln von Prozessen dauert lange Diese Zeit wird bei Threads durch Ressourcenteilung verkürzt Beispiel Solaris: Prozesserzeugung 30 Mal langsamer als Threaderzeugung, Prozesswechsel 5 Mal langsamer als Threadwechsel Nutzung paralleler Architekturen: Ein-Prozess-Anwendungen laufen auf einer CPU, selbst wenn mehrere CPUs vorhanden sind. Multithreaded Anwendungen nutzen die echte Parallelität aus O. Kao Betriebssysteme 2-34 (Wiederholung KMS) 34

O. Kao Betriebssysteme 2-35 (Wiederholung KMS) Threadtypen Grundsätzlich werden Threads aufgeteilt in Kernel-Level-Threads (KL-Threads): realisiert im Kernadressraum User-Level-Threads (UL-Threads): realisiert im Benutzeradressraum Hybride Realisierung sind allerdings auch möglich Realisierung Realisierung im Benutzeradressraum im Kernadressraum 35 Multithreading-Modelle Modelle für hybride Unterstützung von KL- und UL-Threads Zuordnung vieler UL-Threads zu einem KL-Thread (many-to-one) Zuordnung eines UL-Threads zu einem KL-Thread (one-to-one) Zuordnung mehrerer UL- zu mehreren KL-Threads (many-to-many) UL-Threads KL-Threads O. Kao Betriebssysteme 2-36 (Wiederholung KMS) 36

2.4 Beispiel für Threadbibliotheken: Pthreads Spezifikation (keine Implementierung!) der Pthreads bezieht sich auf den POSIX Standard API definiiert Verhalten, Implementierung betriebssystemabhängig UL-Thread Bibliothek, keine deutliche Verbindung zu KL-Threads Pthreads üblicherweise beschränkt auf UNIX Systeme Für Windows Systeme sind Sharewarebibliotheken verfügbar Wichtige Elemente pthread.h: Headerfile mit Deklarationen und Definitionen pthread_t handle: Grundlegende Datenstruktur für den zu erstellenden Thread pthread_attr_t attr: Festzulegende Threadattribute (Defaultwerte, wenn nichts angegeben) pthread_func_t thread_func: Auszuführende Funktion arg: Zeiger auf Anwendungsparameter O. Kao Betriebssysteme 2-37 37 Verwaltungsroutinen für Pthreads Erzeugen und Starten eines Threads int pthread_create(pthread_t *handle, pthread_attr_t *attr, pthread_func_t *thread_func, pthread_addr_t *arg); Rückgabewert: Null bei erfolgreiche Ausführung; Sonst Fehler Rückgabe des Ergebnisses int pthread_exit(pthread_addr_t *result) Warten auf das Ergebnis an beliebiger Stelle int pthread_join(pthread_t *handle, pthread_addr_t *result); Beendigung (cancel) und Löschung (detach) eines Threads int pthread_cancel(pthread_t *handle); int pthread_detach(pthread_t *handle); Ausschlussoperation, um Unterbrechungen zu unterbinden int pthread_setcancel (int state); O. Kao Betriebssysteme 2-38 38

Wechselseitiger Ausschluss Binäre Semaphore mit den Zuständen gesperrt und frei int pthread_mutex_init (pthread_mutex_t *mutex, pthread_mutexattr_t attr); Sperren eines Semaphors int pthread_mutex_lock(pthread_mutex_t *mutex); Testoperation int pthread_mutex_trylock(pthread_mutex_t *mutex); Freigabe eines gesperrten Semaphors int pthread_mutex_unlock(pthread_mutex_t *mutex); Löschen eines Semaphors int pthread_mutex_destroy(pthread_mutex_t *mutex); Analog mit Bedingungsvariablen Formulierung allgemeiner Synchronisationsbedingungen Dient zum längeren Warten, bis eine Bedingung wahr wird O. Kao Betriebssysteme 2-39 39 Beispielprogramm #include <pthread.h> int sum; /* globale Variable für alle Threads */ void *runner(void *param); /* Thread */ main(int argc, char *argv[]) { pthread_t handle; pthread_attr_t attr; pthread_attr_init(&attr); /* Aktuelle Attribute */ pthread_create(&handle, &attr, runner, argv[1]); /* Erzeuge Thread */ pthread_join(&handle, NULL); /* Warte bis Thread fertig */ printf( sum=%d\n,sum); } void *runner(void *param) { /* Der Thread bekommt die Kontrolle in dieser Funktion */ int upper=atoi(param); int i; sum = 0; if (upper>0) { for (i=1;i<=upper;i++); sum += i; } pthread_exit(null); /* Thread beendet sich und übergibt die Kontrolle an das Hauptprogramm */ O. Kao Betriebssysteme 2-40 40

Threadbibliothek in Solaris 2 Solaris 2 unterstützt KL- und UL-Threads, symmetrische Multiprozessoren (SMP) und Echtzeitscheduling (Pthread API) Erweiterung: Leichtgewichtsprozesse (LWP) als Zwischenstufe zwischen UL- und KL-Threads Zuordnung UL-Threads zum Pool von LWPs (many-to-many) Jeder LWP ist einem KL-Thread zugeordnet (one-to-one) Sind n UL-Threads einem LWP zugeordnet, dann sind n-1 inaktiv (blockiert, wartend für LWP) und nur 1 UL-Thread aktuell rechnend (oder bereit) O. Kao Betriebssysteme 2-41 41 Threadbibliothek in Solaris 2 (2) Wichtiges Attribut für die UL-Threads Gebunden an LWP (bound): Permanent bereit oder auf einer dedizierten CPU laufend, wichtig z.b. bei Echtzeitanwendungen Ungebunden (unbound): Zuordnung UL -> LWP erfolgt dynamisch während der Laufzeit (Default-Einstellung) Eigenschaften dieser Lösung Beliebig viele UL-Threads möglich, LWP-Anzahl wird von der Threadbibliothek automatisch bestimmt beste Leistung für die Anwendung Erzeugung, Zuordnung, Scheduling, Löschung von UL-Threads effizient im Benutzerraum durchführbar BS versetzt KL-Threads in Zustand laufend/bereit/blockiert Blockiert ein KL-Thread, so sind auch der LWP und die zugeordneten UL- Threads blockiert Zusätzlicher LWP notwendig, damit bereite UL- Threads dennoch ausgeführt werden können LWPs werden automatisch nach Timeout (üblicherweise 5 Minuten) wegen Inaktivität gelöscht O. Kao Betriebssysteme 2-42 42

2.5 Zuteilungsverfahren Grundlegende Zuteilungsaufgaben Koordination und Synchronisation von Prozessen Sicherstellung der Benutzererwartungen Statische und dynamische Zuordnung von Betriebsmitteln Ziele der Strategien zur Betriebsmittelzuteilung Optimierung der Betriebsmittelauslastung Konfliktfreie Zuteilung Zumindest Minimalverfügbarkeit von Betriebsmitteln sicherstellen Typen von Zuteilungsverfahren Long-term Start eines neuen Prozesses } Scheduler Medium-term Erstzuweisung von Hauptspeicher Short-term Zustandswechsel des Prozesses } Dispatcher Koordination der Ein- und Ausgabeaktivitäten Kernaufgabe: Effiziente Zuteilung des Prozessors (Scheduling) O. Kao Betriebssysteme 2-43 43 Prozessverhalten Bei fast allen Prozessen wechseln sich Zeiten mit hoher Rechenlast und Zeiten mit hoher Ein- und Ausgabelast ab Unterscheidung Berechnungslastige Prozesse: lange, ununterbrochene Nutzung der CPU, relativ seltene E/A-Phasen E/A-lastige Prozesse: kurze CPU-Nutzungszeiten, häufige E/A-Phasen CPU-Belastung Warten auf E/A Schlüsselfaktoren für Scheduling Länge der CPU-Nutzung in einem Zyklus Verwaltungsoverhead für E/A z.b. bei Festplatten unabhängig von der Größe der gelesenen Daten Schere zwischen Geschwindigkeiten von E/A-Geräten und Prozessorgeschwindigkeiten geht immer weiter auf Scheduling von E/Alastigen Prozessen entscheidend für die Effizienz des Gesamtsystems O. Kao Betriebssysteme 2-44 44

O. Kao Betriebssysteme 2-45 Blockiert Suspendiert Bereit Suspendiert Mid-Term-Scheduling Lomg-Term-Scheduling Blockiert Bereit Laufend Short-Term-Scheduling Initiiert Beendet Typen von Zuteilungsverfahren 45 Typen von Zuteilungsverfahren (2) Long-term-Scheduling Verantwortlich für Multiprogramming: je höher die Anzahl nebenläufig ablaufender Prozesse, desto länger die Antwortzeit Aktivierung bei Unter/Überschreitung von CPU-Auslastungsgrenzen Auswahlkriterien zur Initialisierung eines neuen Prozesses Priorität Geschätzte Laufzeit und Prozessverhalten, weitere BM-Anforderungen Mid-term Scheduling Zuständig für die Feinabstimmung des Multiprogramming, hauptsächlich durch Ein- und Auslagerung von Prozessen Aktivierung abhängig von den Speicheranforderungen der Prozesse Short-term Scheduling Direkte Umsetzung des Prozesszustandwechsels Verwaltung von Ereignissen wie Timessignale und E/A-Unterbrechungen Systemaufrufe und Umschalten in privilegierten Modus O. Kao Betriebssysteme 2-46 46

Schedulingstrategien Bekannte Strategien FCFS (First Come First Served) LCFS-PR (Last Come First Served Pre-emptive Resume) SJN (Shortest Job Next), SRTN (Shortest Remaining Time Next) PRIO-NP (Priorities Non pre-emptive) Zeitscheibenverfahren (Round Robin) Multilevel-Feedback-Scheduling Anpassung an Ausführungsverhalten (Modifikation der Zeitscheibenlänge) und an Ausführungszeit (Stufenweise Prioritätenreduktion) Vorgehensweise Verdrängte Prozesse kommen in darunterliegender Bereit-Liste Bei blockierenden Operationen oder bei freiwilliger CPU-Abgabe verbleiben die Prozesse in der Warteschlange Bevorzugung E/A-intensiver Anwendungen Zusätzliche Feedback-Mechanismen ermöglichen eine Hochstufung (kürzere Zeitscheibe/höhere Priorität) O. Kao Betriebssysteme 2-47 47 Zugang Zugang Zugang Zugang Multilevel-Feedback- Scheduling Warteschlange 1 Zeitscheibe 8 ms CPU Abgang Hohe Priorität Warteschlange 2 Zeitscheibe 16 ms CPU Abgang Warteschlange 3 Abgang Zeitscheibe 32 ms CPU Warteschlange n FCFS CPU Abgang Geringe Priorität O. Kao Betriebssysteme 2-48 48

Schedulingbeispiel: Solaris 2 Vier Klassen für prioritätenbasierten Scheduling vorhanden Echtzeit, System, Zeitscheiben (Time Sharing) und Interaktiv Jede Klasse kann über unterschiedliche Schedulingpolicies und Prioritäten verfügen Klasse Zeitscheiben wird nach Multilevel-Feedback verwaltet Klasse Interaktiv benutzt die gleiche Policy wie Zeitscheiben, gewährt aber Anwendungen mit GUI-Ausgabe höhere Prioritäten Klasse System umfasst Prozesse, die in Kernmodus laufen, z.b. der Scheduler und der Paging Daemon Keine Zeitscheiben Prozesse laufen, bis sie blockieren, die CPU freiwillig abgeben oder bis Prozesse höherer Priorität da sind Prioritäten ändern sich nicht Echtzeitprozesse haben die höchste Priorität aller Klassen Konvertierung der Klassenprioritäten in globale Prioritäten durch BS Bei mehrerer Prozessen gleicher Priorität wird nach Round-Robin vorgegangen O. Kao Betriebssysteme 2-49 49 Schedulingbeispiel: Solaris 2 (2) Globale Priorität Scheduling- Reihenfolge Klassenspezifische Prioritäten Warteschlangen Höchste Priorität Erster Echtzeit Kernelthreads von Echtzeit-LWPs System Threads für Kerndienste Niedrigste Priorität Letzter Interaktiv, Zeitscheiben Kernelthreads von interaktiven LWPs und LWPs mit Zeitscheiben O. Kao Betriebssysteme 2-

Schedulingbeispiel: Solaris 2 (3) Level 0 1 2 3 4 5 6 7 8... 53 54 55 56 57 58 59 ts_quantum 200 200 200 200 200 200 200 200 200 40 40 40 40 40 40 20 ts_tqexp 0 0 0 0 0 0 0 0 0 43 44 45 46 47 48 49 ts_lwait 59 59 59 59 59 59 59 ts_slpret 58 58 58 58 58 58 59 O. Kao Betriebssysteme 2-51 51 2.5 Prozesse und Scheduling unter Linux Unix kennt keine Threads, Realisierung über zusätzliche Bibliotheken wie PThreads Art von Prozessen Idle Task (PID 0) Erzeugung bei Initialisierung des BS für jede CPU Wird als erster Prozess von Hand durch INIT_TASK(tsk)-Makro während der Initialisierung von Linux erzeugt Kernel Threads: Ausführung von Kerndiensten (z.b Init, Pageframe-Swapping, Netzwerk) mit direktem Zugriff auf Kernadressraum und besonderen I/O Privilegien User Task: Klassische Unix Prozesse im Benutzeradressraum Maximale Anzahl von Prozessen nur noch durch Größe des physikalischen Speichers begrenzt (früher: Begrenzung auf 512 Prozesse) O. Kao Betriebssysteme 2-52 52

Linux PCB Prozessinformationen werden in der Datenstruktur task_struct abgelegt (eine Struktur pro Prozess) struct task_struct {... pid_t pid; // Prozess-Identifikator volatile long state; // aktueller Prozesszustand volatile long need_resched; // Flag (Scheduler) long counter; // Quantum (Ticks) long nice; // Dynamische Priorität unsigned long policy; // Prioritätsklasse unsigned long rt_priority; // Statische Priorität struct mm_struct *mm, *active_mm; // Adressraum-Verwaltung } O. Kao Betriebssysteme 2-53 53 Prozessverwaltung Doppelt verkettete Liste prev_task/next_task sind in task_struct, Init-Task markiert den Listenanfang prev_task init_task next_task Hashtabelle mit Schlüssel basierend auf PID Felder pidhash_next und pidhash_pprev befinden sich in task_struct Key(PID) 0 PID = 66 pidhash_pprev PID = 55 pidhash_next PID = 585 1024 O. Kao Betriebssysteme 2-54 54

Zustandsmodell TASK_ZOMBIE TASK_INTERRUPTABLE exit() fork() usleep() TASK_RUNNING ptrace() I/0 TASK_STOPPED TASK_UNINTERRUPTABLE O. Kao Betriebssysteme 2-55 TASK_RUNNING: Prozess befindet sich im Speicher und wird als lauffähig eingestuft. (READY+RUNNING) TASK_INTERRUPTIBLE: Prozess schläft solange, bis er entweder durch ein Signal oder Timer geweckt wird. (WAIT) TASK_UNINTERRUPTIBLE: Prozess schläft solange, bis der blockierte Aufruf beendet wurde. (BLOCKED) TASK_ZOMBIE: Prozess wurde beendet. Der Rückgabewert des Kindprozesses wurde noch nicht vom Vaterprozess empfangen. TASK_STOPPED: Prozess wurde angehalten, zum Beispiel durch Benutzung von ptrace (2). (SUSPENDED) TASK_EXCLUSIV: Prozess wird beim auf-wecken bevorzugt behandelt. 55 Prozesszustände TASK_RUNNING: Prozess im Speicher und lauffähig TASK_INTERRUPTIBLE: Prozess blockiert, bis er entweder durch ein Signal oder Timer geweckt wird (WAIT) TASK_UNINTERRUPTIBLE: Prozess blockiert, bis der blockierende Aufruf beendet wurde (BLOCKED) TASK_ZOMBIE: Prozess beendet, Rückgabewert des Kindprozesses wurde noch nicht vom Vaterprozess empfangen TASK_STOPPED: Prozess wurde angehalten, zum Beispiel durch Benutzung von ptrace (SUSPENDED) TASK_EXCLUSIV: Prozess wird beim Restart bevorzugt behandelt O. Kao Betriebssysteme 2-56 56

Scheduling-Verfahren UNIX/Linux-Scheduling basiert auf Multilevel-Feedback-Scheduling Statische und dynamische Prioritäten zur Prozessauswahl Verwaltung der lauffähigen Prozesse in einer Liste (runqueue) Scheduling-Verfahren (policies) SCHED_OTHER: basiert auf PRIO-P, für normale Prozesse Statische Priorität = 20, dynamische Priorität (nice): [-20 19] Verdrängung durch Prozesse mit höherer statischer Priorität Die nicht verbrauchte Zeitscheibe bleibt als Gutachten erhalten SCHED_FIFO: basiert auf FCFS, für Echtzeitprozesse (Real-Time FIFO) Statische Priorität: 1-99, bei gleicher Priorität Wahl des ersten Prozesses Verdrängung durch Prozesse mit höherer statischer Priorität SCHED_RR: basiert auf Round-Robin, für Echtzeitprozesse (Real-Time RR) Statische Priorität: 1-99, bei gleicher statischer Priorität FIFO Nach Ablauf der Zeitscheibe Einordnung ans Ende der runqueue Verdrängung durch Prozesse mit höherer statischer Priorität O. Kao Betriebssysteme 2-57 57 Multilevel-Scheduling von Prozessen Statische Priorität Abarbeitungsreihenfolge 99 98... 22 21 SCHED_RR oder SCHED_FIFO A B C D E RR FIFO 20... SCHED_OTHER F G PRIO O. Kao Betriebssysteme 2-58 58

Funktionsweise des Schedulers Scheduling-Algorithmus in Linux Entferne alle Prozesse aus der Wartschlange runqueue, deren Zustand nicht TASK_RUNNING ist, d.h. die nicht ablaufbereit sind Bewerte jeden lauffähigen Prozess aus der runqueue und wähle den Prozess mit der höchsten Bewertung Wenn alle Zeitkonten (Quantum) der lauffähigen Prozesse (blockierte werden nicht berücksichtigt) abgelaufen sind, dann berechne die Zeitkonten aller Prozesse neu Quantum: Bestimmte Anzahl sog. Uhrticks, üblicherweise 20, wobei ein Uhrtick etwa 10ms beträgt Bestimme den auszuführenden Prozess und rufe Dispatcher auf CPU wird entzogen, wenn Quantum vollständig verbraucht (Quantum=0) Thread blockiert wegen E/A Thread höherer Priorität ist ablaufbereit O. Kao Betriebssysteme 2-59 59 Prozessbewertung Bewertung eines Prozesses durch die Funktion goodness(...) 1. Rückgabe 1: Freiwillige Abgabe der CPU 2. Rückgabe 0: Quantum aufgebraucht 3. Rückgabe [1-1000]: Normaler Prozess 4. Rückgabe > 1000: Echtzeitprozess Je größer der Rückgabewert, desto besser ist die Bewertung Berechnung der Funktion goodness() im Fall 3 und 4 Bei normalen Prozessen (Fall 3) Allgemein: Güte = quantum + priorität Gleicher Prozess hat noch Zeit übrig: Güte = quantum + priorität + 1 Gleicher Adressraum wie aktueller Prozess: Güte = quantum + priorität + 1 Bei Echtzeit-Prozessen (Fall 4): Güte = 1000 + Priorität Neuberechnung: Quantum_neu = Quantum_alt/2+Basispriorität O. Kao Betriebssysteme 2-60 60

2.7 Prozesse und Scheduling unter Windows Job: Ansammlung der als Einheit verwalteten Prozessen mit folgenden vererbbaren Eigenschaften Maximale Anzahl von Prozessen im Kontingent Maximale CPU Zeit und Speichernutzung pro Prozess/alle Prozesse im Job Sicherheitseinschränkungen für Prozesse, z.b. keine Superuserrechte Prozess: Container für Ressourcen 4-GB-Adressraum (2 bis 3 GB für Benutzer, Rest für BS) Prozesseigenschaften: PID, mindestens ein Thread, Handle-Tabelle, Vater-Kind-Hierarchie durch Duplizierung/Weitergabe von Handles Threads: Unterstützung vom BS-Kern, z.b. beim Scheduling Fiber: UL-Thread, Verwaltung (Erzeugen, Scheduling) nur im Benutzerraum API-Funktionen wie ConvertThreadToFiber (Fiber erzeugen und starten), CreateFiber (Fiber erzeugen), SwitchToFiber (Fiber starten), Jeder Thread kann mehrere Fiber haben O. Kao Betriebssysteme 2-61 61 Fiber Thread Beziehung zwischen Jobs, Prozessen, Threads, Fiber Job Adressraum Prozess Benutzer- Modus Prozess- Handle- Tabelle Kern- Modus O. Kao Betriebssysteme 2-62 62

Prioritätstabelle für Scheduling Threads rufen selbst den Scheduler auf Kombination aus Prozess- und Threadpriorität ergibt 42 Werte [0, 31] Systemprioritäten 16..31 Zuweisung durch Administrator Benutzerprioritäten 0..15 (Änderung mit API SetThreadPriority) Zeitkritisch Win32-Prozessklassen-Prioritäten Echtzeit Hoch 31 15 Über normal 15 Normal 15 Unter normal 15 Idle 15 Höchste 26 15 12 10 8 6 Win32- Thread- Prioritäten Über normal Normal Unter normal 25 24 23 14 13 12 11 10 9 9 8 7 7 6 5 5 4 3 Niedrigste 22 11 8 6 4 2 Idle 16 1 1 1 1 1 O. Kao Betriebssysteme 2-63 63 Arbeitsweise des Scheduling- Algorithmus Verwaltung der Prioritätsliste mit 32 Prioritäten Jeder Eintrag enthält Liste mit allen wartenden Threads der gleichen Priorität Durchlaufen der Liste von Priorität 31 bis Priorität 0 Bei nichtleerem Eintrag führe die Prozesse nach Round-Robin aus Spezielle Threads Null Thread: läuft im Hintergrund, überschreibt Speicherseiten mit Nullen Idle Thread: Läuft, wenn keine anderen Threads inkl. Null Thread aktiv Nullseiten-Thread Nächster ausgeführter Thread Idle Thread 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Benutzer-Prioritäten System-Prioritäten O. Kao Betriebssysteme 2-64 64

Zeitscheibenlänge Zeitscheibenlängen Standardeinstellung: 20ms, Einzelprozessor-Server: 120ms Multiprozessor-Systemen: abhängig von Taktfrequenz Die Einstellungen können um den Faktor 2, 4 oder 6 erhöht werden Kürzere Zeitscheiben bevorzugen interaktive Benutzer Längere Zeitscheiben erfordern weniger Kontextwechsel und sind effizienter Zeitscheibenlänge seit mehr als 10 Jahren unverändert!!! Verringerung der Priorität Verbraucht ein Thread seine gesamte nächste Zeitscheibe, so wird seine Priorität um eine Einheit verringert, solange die aktuelle Priorität höher ist als seine Basispriorität (Variante von Aging) O. Kao Betriebssysteme 2-65 65 Strategien zur Verbesserung des Schedulings Prioritätserhöhung bis zur Stufe 15 Nach Beendigung der E/A-Operation wird die Threadpriorität abhängig vom Gerättyp angehoben Auslastung aller E/A-Geräte Nach Freigabe eines Semaphors oder bei eintreffender Nachricht wird die Priorität des deblokierten Threads um 2 Einheiten (Thread gehört zum Vordergrundprozess) bzw. 1 Einheit angehoben, um interaktive Prozesse zu bevorzugen Deaktivierung des Schedulings Systemthread mit niedriger Priorität ist im kritischen Bereich, auf dessen Semaphore auch andere Systemthreads warten Ausschalten des Scheduling bis zum Ende des aktuellen Systemthreads verhindert, dass Systemthreads verhungern Verlängerung der Zeitscheibe Ist ein Fenster im Vordergrund, so erhalten all seine Threads eine längere Zeitscheibe O. Kao Betriebssysteme 2-66 66