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

Ähnliche Dokumente
Dämon-Prozesse ( deamon )

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

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

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Technische Informatik 1

Windows 2000 Scheduler

Threads Einführung. Zustände von Threads

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

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

Teil 3: Konzepte von Betriebssystemen

Javakurs für Fortgeschrittene

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

Der Scheduler von Windows 2000 Konzepte und Strategien

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

Prozesse and Threads WS 09/10 IAIK 1

Nebenläufige Programmierung in Java: Threads

Betriebssysteme Betriebssysteme und. Netzwerke. Netzwerke Theorie und Praxis

Betriebssysteme. Tutorium 2. Philipp Kirchhofer

Threads and Scheduling

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

Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads

Prozesszustände (1a)

Testen nebenläufiger Objekte

VORSTELLUNG DER DIPLOMARBEIT

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

Vorlesung Betriebssysteme I

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.

Grundlagen Rechnerarchitektur und Betriebssysteme

Parallele Prozesse. Prozeß wartet

Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen)

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

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

Scheduling-Algorithmen: Zeitpunkt der Auswahlentscheidung

Prozesse und Scheduling

e) Welche Aussage zu Speicherzuteilungsverfahren ist falsch?

Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester

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

Musterlösung zur KLAUSUR

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

Single- und Multitasking

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

Domänenanalyse Threadverwaltung/Scheduling

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

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

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

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

Prozesse und Scheduling unter Linux (Kernel 2.4.XX)

Master-Thread führt Programm aus, bis durch die Direktive

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

Überlegungen beim Entwurf eines Betriebssystems

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

Betriebssysteme Kapitel E : Prozesse

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

Betriebssysteme Teil 7: Konzept der Threads

Übung zu Grundlagen der Betriebssysteme. 7. Übung

I 7. Übung. I-1 Überblick. Besprechung Aufgabe 5 (mysh) Online-Evaluation. Posix Threads. Ü SoS I I.1

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

5. Foliensatz Betriebssysteme und Rechnernetze

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

Musterlösung Prüfung WS 01/02

Klausur Betriebssysteme I

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

Klausur Betriebssysteme

Vorlesung Betriebssysteme

Einführung Verteilte Systeme - Java Threads I -

Modul B-PRG Grundlagen der Programmierung 1

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

Dr. Monika Meiler. Inhalt

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

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

Der Scheduler von Windows Konzepte und Strategien

Windows-Multithreading

Prozesse. Netzwerk - Programmierung. Alexander Sczyrba Madis Rumming

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

Betriebssysteme KU - Einführungstutorium

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

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming

Literatur. VA SS Teil 5/Messages

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

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

Prozesse. Prozesskonzept. Prozess- ein Programm in Ausführung

Programmieren 2 12 Netzwerke

c) Welcher UNIX-Systemaufruf wird bei der Verwendung von Sockets auf keinen Fall gebraucht? close() accept() mmap() shutdown()

Info B VL 16: Monitore und Semaphoren

Basisinformationstechnologie I Wintersemester 2011/ November 2011 Betriebssysteme

Die Ausführung geschieht über die sequentielle Abarbeitung der Instruktionen.

Konzepte von Betriebssystemkomponenten Referat am Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner

1 Ab welchen Zeitpunkt kann man Thrashing bei einem PC beobachten? 2 Auf was muss man beim gleichzeitigen Datenzugriff mehrerer Prozesse beachten?

Klausur Betriebsysteme, Windows NT. Wintersemester 00/01. Dipl.-Ing. Jürgen Halkenhäuser Dipl.-Ing. T. Kloepfer

U8 POSIX-Threads U8 POSIX-Threads

Transkript:

Threads Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden ) Ein thread bearbeitet eine sequentielle Teilaufgabe innerhalb eines Prozesses Mehrere nebenläufige Teilaufgaben können in mehreren Threads innerhalb eines Prozesses abgearbeitet werden ( Multithreading ) Thread verfügt über einen eigenen Hardwarekontext ( PC, SP, Prozessorregister ), einen Ausführungszustand und einen eigenen Stack läuft jedoch im Softwarekontext des Prozesses und teilt sich damit den virtuellen Adressraum und alle Ressourcen mit allen anderen Threads des Prozesses Threads Nebenläufige Ausführungsfunktionen Prozess 1 3 Threads Verwaltungsungs-/ Sicherungsaufgaben Adressraum Ressourcen Schutzfunktionen Programmausführung Prozess 2 1 Thread Verwaltungsungs-/ Sicherungsaufgaben Adressraum Ressourcen Schutzfunktionen Programmausführung Globale Variable

Threads Vorteile: schneller Prozesswechsel, da nur der Hardwarekontext ausgetauscht werden muss einfacher Austausch von Informationen zwischen nebenläufigen Threads durch einen gemeinsamen Adressraum (globale Daten des Prozesses ) Nachteile: Durch den gemeinsamen Adressraum ist kein Schutz vor fehlerhaftem Zugriff auf globale Daten möglich Wenn mehrere Threads auf gemeinsame Daten arbeiten, müssen diese Threads synchronisiert werden. Fehlende oder fehlerhafte Synchronisation verursacht Datenverluste oder Dateninkonsistenzen Multithreading Thread-Implementierung ( ULT = user level Thread ) Unix, Linux Kernel-Threads ( KLT = kernel level thread ) Windows NT/2000/XP, Linux, Mach Kombination ( Solaris )

Laufen im User Modus. Der BS-Kern ( Kernel ) kennt unbd verwaltet selbst keine Threads sondern nur Prozesse. Der Anwendungsprozess verwaltetet seine Threads selbst Die Verwaltung erfolgt über eine Thread-Bibliothek, in der alle Funktionen zur Verwaltung, Erzeugung, Terminieren und Synchronisieren realisiert werden. In der Bibliothek sind für jeden Thread entsprechende Datenstrukturen implementiert. Weiterhin übernimmt die Bibliothek auch das Umschalten und Scheduling zwischen den Threads innerhalb des Prozesses. Scheduling von Prozessen ist damit unabhängig vom Scheduling der Threads Multithreading Beispiel BS kennt Prozess A und Prozess B Prozess A besitzt Thread A.1 und Thread A.2. Prozess B besitzt nur Thread B.1 Fall 1: Prozess A ist rechnend. Innerhalb A ist Thread A.2 rechnend. Thread A.2 ruft eine blockiernde Systemfunktion z.b. I/O-Wunsch auf. SVC d.h. Sprung in den Kernel zur Abarbeitung der Systemfunktion. Prozess A wird blockiert. Prozess B wird rechnend. Im Prozess A wird Thread A.2 immer noch als rechnend eingestuft. I/O.Ereigniss ist eingetroffen. Sprung in den Kernel Prozess A wird vom Kernel wieder deblockiert. Wenn Prozess A vom Kernel wieder in den Zustand rechnend überführt wird kann Thread A.2 weiter ausgeführt werden.

Beispiel BS kennt Prozess A und Prozess B Prozess A besitzt Thread A.1 und Thread A.2. Prozess B besitzt nur Thread B.1 Fall 2: Prozess A ist rechnend. Innerhalb A ist Thread A.2 rechnend. Thread A.2 ruft blockiernde Funktion der Thread-Bibliothek auf z.b. warten auf Ereignis von Thread A.1 Prozess A bleibt rechnend ( falls Zeitscheibe noch nicht abgelaufen ist ), Thread A.2 wird blockiert und Thread A.1 wird rechnend. Multithreading Vorteile: Threadwechsel wird im User-Modus abgearbeitet. Kein SVC und daher wesentlich schneller. Prozessspezifisches Scheduling der Threads unabhängig vom Scheduling des BS-Kerns. Die Bibliothek kann auf jedes beliebige Betriebssystem aufgebaut werden. Es sind keinerlei Änderungen im Kernel notwendig. Nachteile: Blockiert ein thread blockiert auch der Prozess und damit auch alle anderen threads im Prozess. Mehrprozessorbetrieb ist nicht nutzbar. Alle Threads eines Prozesses laufen auf einem Prozessor ab.

Kernel-Thread Kernel übernimmt die Verwaltung von Threads und Prozessen Das Scheduling erfolgt im Betriebssystem auf Basis der threads. Vorteile: Unterstützt Mehrprozessoren-Archtiketur Ein blockierter thread blockiert nicht nicht andere threads im gleichen Prozess. Nachteil: Ein Threadwechsel bedeutet immer auch aufrufen eines SVC und damit Übergang in den privilegierten Modus. Multithreading Windows 2000 Threads werden als Kernel-Threads realisiert Ein Prozess kann mehrere Threads besitzen Scheduling in NT erfolgt ausschließlich über Threads Ein Prozess besteht aus mindestens einem Thread. Ein Thread kann selbst wieder Sohn-Threads erzeugen. Eigenschaften eines Thread sind : eine eindeutige Kennung ( Thread-ID ) Thread-Kontext (Prozessorregister, PC, Stack, Stackzeiger ) Basispriorität und Dynamische Priorität Prozessoraffinität ( Prozessoren auf der dieser Thread ausgeführt werden kann ) Ausführungzeit ( = Rechenzeit ) Terminierungsstatus

Threadzustände Windows 2000 Thread erzeugen und starten bereit Ressource wird verfügbar transition unterbrochen unterbrochen Scheduler standby Objekt wird signaled wartend Ressource nicht verfügbar Dispatcher beendet Terminieren rechnend System Call warte auf Objekt signaled Threadzustände Windows 2000 Bereit kann vom Scheduler eingeplant werden Rechnend ( aktiv ) Ist gerade auf einem Prozessor rechnend Standby Wurde vom Scheduler ausgewählt muss aber noch auf einen bestimmten Prozessor warten. Die Abarbeitung erfolgt sobald der Prozessor frei wird. Wartend wartet auf Ereignis, auf I/O, auf Systemobjekte oder freiwillig ohne Grund transition Grund der blockierung ist aufgehoben kann jedoch nicht abgearbeitet werden da noch Ressourcen z.b. Speicher fehlen. Beendet ( Terminiert ) Hat sich selbst beendet oder wurde von anderen threads bzw. dem Vaterprozess beendet

linux Linux verwaltet keinen eigenen threads Ein thread wird wie ein prozess behandelt. Unter linux werden threads durch Kopieren von Prozessen erzeugt. Der Prozess erbt damit auch die Ressourcen des Vaterprozesses. Es ist möglich das ein kopierter Prozess sich den virtuellen Speicher mit seinem Vaterprozess teilt Dadurch entsteht ein thread in einem Prozess