Prozesse und Scheduling unter Linux (Kernel 2.4.XX)

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

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

Dämon-Prozesse ( deamon )

Proseminar KVBK : Scheduler unter Linux

Embedded-Linux-Seminare. Linux als Betriebssystem

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

Prozesse: Prozesskontrollblock, -zustände, -umschaltung

Betriebssysteme Kapitel E : Prozesse

UNIX Mechanismen Übung aus Systemprogrammierung & Systemnahe Programmierung. Armin Wasicek SS 2011

UNIX Mechanismen Übung aus Systemprogrammierung & Systemnahe Programmierung. Armin Wasicek SS 2010

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

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

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

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

fork () Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS Prozesse (2/2) Folie 4

Prozesse und Logs Linux-Kurs der Unix-AG

Prozesse und Logs Linux-Kurs der Unix-AG

2. Prozesse. 2.1 Prozesse als zentrales Konzept

Realtimescheduling im Linux Kernel

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

Linux-Kernel- Handbuch Leitfaden zu Design und Implementierung von Kernel 2.6

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

Betriebssysteme. Kapitel Prozessverwaltung in LINUX Allgemeines Prozess-Zustände Prozess-Identifikation

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

Betriebssysteme Betriebssysteme und. Netzwerke. Netzwerke Theorie und Praxis

Lösungsvorschlag zur 10. Übung

Technische Informatik 1

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Threads and Scheduling

CPU-Scheduling - Grundkonzepte

Musterlösung Prüfung WS 01/02

Abschlussklausur. Betriebssysteme. Bewertung: 22. November Name: Vorname: Matrikelnummer:

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Basisinformationstechnologie I Wintersemester 2011/ November 2011 Betriebssysteme

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

Teil 3: Konzepte von Betriebssystemen

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

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Wolfram Burgard

Operating System Kernels

A Kompilieren des Kernels B Lineare Listen in Linux C Glossar Interessante WWW-Adressen Literaturverzeichnis...

4. Der Linux-Kernel. 4. weiterführendes Linuxtutorium 1

5. Foliensatz Betriebssysteme und Rechnernetze

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Der Scheduler von Windows 2000 Konzepte und Strategien

Rechnerarchitekturen und Betriebssysteme (CS201): Intro Betriebssysteme, SW Interrupts, Supervisory Call

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

TIMI: Technische Informatik

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

Technische Informatik II. SoSe Jörg Kaiser IVS EOS

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

3. Unix Prozesse. Betriebssysteme Harald Kosch Seite 57

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

Betriebssysteme. Teil 13: Scheduling

Timm M. Steinbeck und Arne Wiebalck Lehrstuhl für Technische Informatik Universität Heidelberg. Prozess-Monitoring auf CPU-Takt Ebene

Prozesse. Vorlesung Betriebssysteme I. Zustandsmodell eines Prozesses. Virtuelle vs. reale CPU. Zustandsübergänge cont d

Rechnerarchitektur und Betriebssysteme (CS201): Blockierender SVC, Scheduling, Consumer/Producer, kritisch. Abschnitt

Domänenanalyse Threadverwaltung/Scheduling

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

a) Welches der folgenden Zeichen weist im Shell-Prompt darauf hin, dass Sie mit normalen Benutzerrechten (also nicht als root) arbeiten?

POSIX Echtzeit: Kernel 2.6 und Preempt-RT

Betriebssysteme KU - Einführungstutorium

Foliensatz 2: Prozesse und Threads. Hans-Georg Eßer, Hochschule München Betriebssysteme I, Sommersemester Folie 3

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

e) Welche Aussage zu Speicherzuteilungsverfahren ist falsch?

Klausur zur Vorlesung Grundlagen Betriebssysteme und Systemsoftware

IO-Flexpages in L4/Linux

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

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

Betriebssysteme (BTS)

Prozesse und Threads. Peter Puschner Institut für Technische Informatik

Linux Paging, Caching und Swapping

6.Vorlesung Betriebssysteme Hochschule Mannheim

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

2Binden 3. und Bibliotheken

Konzepte von Betriebssystemkomponenten Disk-Caches und Dateizugriff

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

Betriebssysteme 1. Thomas Kolarz. Folie 1

Vorlesung Betriebssysteme I

Rechnernutzung in der Physik. Betriebssysteme

Embedded Software Engeneering mit dem Raspberry Pi

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Maren Bennewitz

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen

C- Kurs 09 Dynamische Datenstrukturen

Prozesse, Logs und Systemverwaltung

2 Funktionen für die Verwaltung von Kontexten

Systeme 1. Kapitel 5. Scheduling

Systemsoftware (SYS)

Vortrag zum Seminar Konzepte und Techniken virtueller Maschinen und Emulatoren. Bruno Kleinert 20. Juni 2007

Konzepte von Betriebssystemkomponenten

1. Prozesse & Threads (10 Punkte)

5 Kernaufgaben eines Betriebssystems (BS)

Kapitel III. Prozessverwaltung. VO Betriebssysteme

Aufbau eines historischen UNIX-Betriebssystems

Einführung in UNIX 1. Das Betriebssystem UNIX ist fähig, mehrere Aufgaben scheinbar gleichzeitig zu erledigen. Dies wird mit Multitasking bezeichnet.

Echtzeitanwendungen mit Java Real Time Specification for Java

Leichtgewichtsprozesse

U4-1 Aufgabe 3: einfache malloc-implementierung

Betriebssysteme 1. Einführung. Scheduling worum geht es? Scheduler: Gliederung

Transkript:

Prozesse und Scheduling unter Linux (Kernel 2.4.XX) Vorlesung: Dozent: Betriebssysteme Odej Kao Vortragende: Andrè Neubert Alexander Geburzi

Überblick 1. Prozesse unter Linux ProcessControlBlock Prozessliste / PID-Hashing Prozesshierarchie 2. Lebenslauf von Prozessen Erzeugung & RunQueue / WaitQueues Prozess-Zustände Beenden & Zerstören von Prozessen 3. Scheduling unter Linux Allgemeines Strategie Der Scheduler

Prozesse unter Linux (1) ProcessControlBlock (PCB) Struktur vom Typ task_struct (derzeit 1680Bytes groß ) Teilweise Integerwerte, enthaltene Strukturen oder Zeiger auf solche Max. Anzahl von Prozessen nur durch die Größe des Hauptspeichers begrenzt seit Kernel 2.4 (512MB RAM = 32k Prozesse) Zusammen mit Prozess-Kernel Kernel- Stack in einer 8 KByte großen Seite gespeichert Zustandsinformationen Prozessverwaltung Prozessbeziehungen Benutzerkontext Dateisystem geöffnete Dateien Speicherbereich Scheduling task_struct volatile long state; unsigned long flags; pid_t pid; struct list_head run_list struct task_struct *next_task, *prev_task; struct task_struct *pidhash_next; struct task_struct **pidhash_pprev; struct task_struct *p_opptr, *p_pptr; struct task_struct *p_cptr, *p_ysptr, *p_osptr; struct user_struct *user; struct fs_struct *fs; struct files_struct *files; struct mm_struct *mm; volatile long need_resched; long counter; unsigned long policy; long nice; unsigned long rt_priority;

Prozesse unter Linux (2) Prozessliste Doppelt verketteten Ringliste von PCBs Zeiger auf Vorgänger *prev_task und Nachfolger *next_task Der Init_Task (PID 1) bildet Anfang und Ende PID-Hashing Lineares Suchen eines Prozesses zu aufwendig Nahezu konstanter Zugriff durch Hashtable (1024 Einträge) PIDs durch das pid_hashfn(x)-makro in Klassen unterteilt Einträge sind doppelt verkettete PCB-Listen aller Prozesse aus der korrespondierenden Klasse Realisiert durch die Zeiger *pidhash_next, **pidhash_pprev

Prozesse unter Linux (3) Prozesshierarchie Idle_Task (PID 0) Wird als erster Prozess von Hand durch INIT_TASK(tsk)-Makro während der Initialisierung von Linux erzeugt Ruft später immer wieder idle() auf um den Prozessor freizugeben KernelThreads Erledigen sog. Kerndienste z.b. Pageframe-Swapping, Netzwerk Besitzen daher bestimmte Privilegien z.b. I/O privileged benutzen Adressraum des Kernels Leichtgewichtsprozesse z.b. Init_Task (PID 1) u.a. Zerstörung elternloser Prozesse UserTasks Normalen Prozesse des Linux-System Klassischer Unix-Prozess

Lebenslauf von Prozessen (1) Erzeugung von Prozessen mit do_fork() PCB des Vaterprozess wird in ein neues task_struct kopiert Referenzzähler werden erhöht, Flags werden gesetzt Neue Prozesse zunächst im Zustand Task_Uninterruptible Neue PID ermitteln, in Hashtable einfügen und Anzahl der aktiven Prozesse erhöhen Zustand auf Task_Running setzen und seine PID an Vater zurückgeben RunQueue Enthält Prozesse im Zustand Task_Running Doppelt verkettete Liste mit Zeigern auf vorherigen und nächsten Prozess WaitQueues Task_Interruptible und Task_Uninterruptible allein zu ungenau Unterschiedliche Listen je nach Art und Kontext des Wartezustandes es

Lebenslauf von Prozessen (2) Prozess-Zustände Task_Running Besitzt entweder gerade die CPU oder wartet auf Zuteilung vom Scheduler Befindet sich in der RunQueue Task_Interruptible Wartet auf Ereignis z.b. HardwareInterrupt, Verfüg. einer Systemressource, Signal Task_Uninterruptible Wie Task_Interruptible, kann nur nicht geweckt werden bei beiden befindet sich der Prozess in entsprechenden WaitQueues Task_Zombie Beendet, aber Vaterprozess hat noch keine Infos vom toten Prozess s abgerufen Erst nach Abfrage oder Tot des Vaterprozesses kann er entfernt werdenw Wird aber schon aus RunQueue / WaitQueues entfernt Task_Stopped Wurde durch überwachenden Prozess (z.b. mittels ptrace()) ) angehalten Task_Exclusive Bevorzugte Behandlung beim Aufwecken

Lebenslauf von Prozessen (3) Zombie Interruptible exit() fork() I/O Running ptrace() usleep() Stopped Uninterruptible

Lebenslauf von Prozessen (4) Beendigung von Prozessen mit do_exit() Benutzte Datenstrukturen entfernen, Referenzzähler dekrementieren Exit-Code setzen, Verwandte benachrichtigen Kinder erhalten PID 1 als Vaterprozess Vaterprozess erhält Signal SIGCHL Init_Task erbt Kindsprozesse sauberes Entfernen nach Beendigung Zustand Task_Zombie,, Aufruf des Schedulers Zerstören ren von Prozessen mit release_task() Anzahl der Benutzerprozesse dekrementieren Prozess aus Hashtable entfernen Nichtverbrauchte CPU-Zeit verschenken PID auf 0 gesetzt Vom Prozess belegte Speicherseite wird freigegeben

Scheduling unter Linux Zeitscheibenverfahren und Prioritäten (statisch u. dynamisch) Epochen Zu Beginn erhält jeder Prozess eine max. Laufzeit (abhängig von statischer und dynamischer Priorität) Endet, wenn alle lauffähigen Prozesse Laufzeit abgearbeitet haben Unterbrechung durch Timer-Interrupt (x86 Systeme 10ms) Berücksichtigt sowohl Echtzeitprozesse als auch interaktive bzw. Batch-Prozesse Kernel ist non-preemptive Nur UL Prozesse können unterbrochen werden KL Prozesse nicht

Die Strategie Realisiert drei verschiedene Schedulingverfahren (FIFO, RR, Multi-Level Level-Feedback) Jeder Prozess kann festlegen, welches Verfahren für ihn verwendet werden soll Alle aktuell lauffähigen Prozesse werden in einer RunQueue organisiert

Strategie SCHED_FIFO SCHED_FIFO: FIFO-Prinzip Echtzeitprozess benötigt Superuser-Privilegien Abgabe der CPU: bei Aktivierung eines Prozesses mit höherer Priorität bei Aufruf einer I/O-blockierenden Operation durch eigene Freigabe (Yield)

Strategie SCHED_RR SCHED_RR: Round-Robin Robin Echtzeitprozess Benötigt Superuser-Privilegien Abgabe der CPU: Bei Aktivierung eines Prozesses mit höherer Priorität Bei Aufruf einer I/O-blockierenden Operation Durch eigene Freigabe (Yield) Nach Ablauf der Zeiteinheiten

Strategie SCHED_OTHER SCHED_OTHER: Multi-Level Level-Feedback normale Prozesse Abgabe der CPU: Bei Aktivierung eines Prozesses mit höherer Priorität Bei Aufruf einer I/O-blockierenden Operation Durch eigene Freigabe (Yield) Nach Ablauf der Zeiteinheiten

Der Scheduler Scheduler bestimmt, welchem Prozess aus der RunQueue als nächstes n die CPU-Zeit zugewiesen werden soll Er muss dabei die drei verschiedenen Strategien berücksichtigen Bewertet jeden Prozess mit Hilfe der Funktion goodness() Evtl. wird dabei eine neue Epoche eingeleitet und alle SCHED_RR und SCHED_OTHER erhalten neue Zeiteinheiten: counter = counter / 2 + nice Der Prozess mit dem größ ößten Wert erhält den Zuschlag Evtl. vor dem Umschalten organisatorische Dinge erledigen

Die goodness() -Funktion Bewertet einen Prozess folgendermaßen: Flag SCHED_YIELD gesetzt: -1 SCHED_FIFO oder SCHED_RR: 1000 + rt_priority SCHED_OTHER: 0, wenn alle Zeiteinheiten verbraucht sind Sonst Summe aus counter,, der statischen Priorität (nice( nice) und evtl. einem Bonus von 1, falls der Prozess denselben Adressraum hat wie der abzulösende Prozess