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

Ähnliche Dokumente
Übung zu Grundlagen der Betriebssysteme. 10. Übung

Softwarelösungen: Versuch 4

Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN:

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

9. Vorlesung Betriebssysteme

Arten der Synchronisation. Koordination nebenläufiger Prozesse. Koordinierung. Reihenschaltung. Einseitige Synchronisation

Technische Informatik 1

Überlegungen beim Entwurf eines Betriebssystems

Parallele Prozesse. Prozeß wartet

Domänenmodell: Fadenkommunikation und -synchronisation

Grundkurs Betriebssysteme

Technische Informatik II

Übung Betriebssysteme 11

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

Beispiel für überladene Methode

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

Inhaltsverzeichnis XII

Kapitel 4. Monitore und wechselseitiger Ausschluss

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

^ Springer Vi eweg. Grundkurs Betriebssysteme. Synchronisation, Prozesskommunikation, Virtualisierung. Architekturen, Betriebsmittelverwaltung,

Nebenläufige Programmierung

Kritischer Abschnitt. Beispiel: Geld abbuchen. Problem: Wettläufe zwischen den Threads race conditions

Moderne Betriebssysteme. Kapitel 8. Kapitel 8. Folie: 1. Multiprozessorsysteme. Autor: Andrew S. Tanenbaum

Grundkurs Betriebssysteme

Sven Osterwald Concurrent Objects. Proseminar Parallele Programmierung in Java

I Grundlagen der parallelen Programmierung 1

Nebenläufigkeit mit Java

Echtzeit-Multitasking

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

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

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

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

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

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Algorithmen und Datenstrukturen

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

Vorname: Nachname: Matrikelnummer: Klausur. Betriebssysteme

Paging. Einfaches Paging. Paging mit virtuellem Speicher

OpenMP am Beispiel der Matrizenmultiplikation

Betriebssysteme (BS)

Abschlusseigenschaften. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Abschlusseigenschaften

Steffen Heinzl Markus Mathes. Middleware in Java

Advanced Programming in C

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance

Algorithmen und Programmierung IV: Nichtsequentielle Programmierung. Überblick. Überblick

Vorlesung Betriebssysteme I

Universität Karlsruhe (TH)

Operating System Kernels

Vorlesung 5: Interrupts

Technische Informatik II

Grundbegriffe der Informatik

Welche Informatik-Kenntnisse bringen Sie mit?

Interaktionsarten. Zusammenhang. Arten der Interaktion. 7. Kapitel Prozesse im Zusammenspiel: Prozessinteraktion

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

Versuchsziele. Grundlagen. Überblick: FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem. 3.

Technische Informatik II (TI II) (6) Synchronisation. Sebastian Zug Arbeitsgruppe: Embedded Smart Systems

Übung I Echtzeitbetriebssysteme

Grundbegriffe der Informatik

WS Parallele Prozesse. Prof. Hannelore Frank. Parallele Prozesse. PetriNetze. Synchronisation UNIX. Wettbewerb PC Krit.Abschnitt Spinlocks

OpenMP - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009

Hardware Virtualisierungs Support für PikeOS

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

Betriebssysteme. Wintersemester Kapitel 2 Prozess und Threads. Patrick Kendzo ppkendzo@gmail.com

Thread-Erzeugung kostengünstiger als Prozesserzeugung Thread-Umschaltung kostengünstiger als Prozessumschaltung

Projekt für Systemprogrammierung WS 06/07

Verteilte Systeme CS5001

Betriebssysteme (BS) Inhalt. Multiprozessorsysteme. Olaf Spinczyk.

Einführung in die Informatik 1

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

Grundlagen Rechnerarchitektur und Betriebssysteme

Vorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19.

Testen und Debugging

Was machen wir heute? Betriebssysteme Tutorium 2. Organisatorisches. Frage 2.1.a. Theorieblätter Abgabe. Antwort. Probleme mit OS/161?

Übung 8: Semaphore in Java (eigene Implementierung)

Geordnete Binärbäume

Deadlocks. System hat nur begrenzte Ressourcen (Ressourcentypen) Hauptspeicher Externer Speicher Drucker File

Einführung (1) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Erweiterungscurriculum Grundlagen der Informatik

Prozesse und Scheduling

J Mikrocontroller-Programmierung

Betriebssysteme Vorlesung im Herbstsemester 2007 Universität Mannheim

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming

Lösungsvorschlag zu 1. Übung

Lock-freie Konzepte für parallele Software. Ein Überblick. Klaus Kusche, September 2014

z/architektur von IBM

Institut für Programmierung und Reaktive Systeme 24. Juni Programmieren II. 14. Übungsblatt

Gliederung. Monitor (eine auf ein Modul bezogene) Klasse

Algorithmen und Datenstrukturen

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

6. Tutorium zu Softwaretechnik I

VORSTELLUNG DER DIPLOMARBEIT

Instruktionssatz-Architektur

Prüfungsprotokoll der mündlichen Prüfung Verteilte Systeme 1678 (Bachelor Informatik)

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

Einführung in die Programmierung mit Java

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 8. Zufallszahlen Generatoren Anwendungen

Betriebssysteme Vorstellung

Transkript:

Betriebssysteme Vorlesung im Herbstsemester 2010 Universität Mannheim Kapitel 6: Speicherbasierte Prozessinteraktion Felix C. Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 1

Motivation Bisher kennengelernt: Basisabstraktionen für Speicher (Adressraum) und Prozessor (Thread) Threads treten oft in Wechselwirkung zueinander Variante 1: Konkurrenz Zeitliche Abstimmung nebenläufiger Threads Beispiel: Zugriff auf exklusive Betriebsmittel Variante 2: Kooperation Gezielter Informationsaustausch zwischen Threads Beispiel: Clients erhalten Aufträge vom Server Welche Abstraktionen sind für Prozessinteraktion sinnvoll und wie implementiert man sie? Konzentration auf Realisierungen mit gemeinsamen Speicher, also für Laufzeit-Basismodelle A, C, D aus Kapitel 3 Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 2

Positionsbestimmung Gliederung der Vorlesung: 1. Einführung und Formalia 2. Auf was baut die Systemsoftware auf? Hardware-Grundlagen 3. Was wollen wir eigentlich haben? Laufzeitunterstützung aus Anwendersicht 4. Verwaltung von Speicher: Virtueller Speicher 5. Verwaltung von Rechenzeit: Virtuelle Prozessoren (Threads) 6. Synchronisation paralleler Aktivitäten auf dem Rechner 4 Wochen 7. Implementierungsaspekte Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 3

Übersicht Einführung: Kritische Abschnitte Hardwaregestützte Mechanismen Betriebssystemgestützter Mechanismus: Semaphore Sprachgestützter Mechanismus: Monitore Realisierungsbeispiele Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 4

Gemeinsame Datenstrukturen Beispiel aus der Implementierung eines Dispatchers: Angenommen die Bereit-Liste wird durch eine einfach-verkettete Liste von TCBs implementiert Jeder TCB enthält next-feld mit Zeiger auf das nächste Listenelement (NULL falls Liste zuende) TCB bereit = NULL // Initialisierung bereit.put(tcb element) { // fügt vorne an element->next = bereit; bereit = element; Behauptung: Wenn mehrere Threads "gleichzeitig" auf der Liste hantieren, können Elemente verloren gehen Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 5

Korrektheit unter Nebenläufigkeit Gleichzeitigkeit = Nebenläufigkeit im Zeitmultiplex mit Interrupts Beispiel: Zwei Threads A und B mit Timer Interrupt Beide blockiert, werden nacheinander durch Interrupts deblockiert Prozess A Prozess B // put e1 into bereit // put e2 into bereit e1->next = bereit; e2->next = bereit; bereit = e2; bereit = e1; Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 6

Kritischer Abschnitt Das Einfügen eines Elements in die Liste ist ein kritischer Abschnitt Kritischer Abschnitt = Abschnitt im Code eines Prozesses, in dem gemeinsame Ressourcen bearbeitet werden Die Manipulation von gemeinsamen Datenstrukturen wird durch ein Eintritts- und ein Austrittsprotokoll geschützt Einfachste Variante: Synchronisation über eine gemeinsame Speicherzelle (Sperrflag, Bit), das entweder frei oder belegt ist Programmierung:... Sperren(flag) // kritischer Abschnitt Freigabe(flag)... Operationen Sperren und Freigabe realisieren die Eintritts- und Austrittsprotokolle Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 7

Wechselseitiger Ausschluss Die Operationen Sperren und Freigabe müssen folgende Bedingung garantieren Wechselseitiger Ausschluss (mutual exclusion): Zu jedem Zeitpunkt ist maximal ein Prozess in seinem kritischen Abschnitt Ein belegtes Sperrflag soll nachfolgende Prozesse blockieren Wir vernachlässigen vorerst das Konzept der Fairness Ablaufbeispiel: Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 8

Beispiel: Bereit-Liste Die Implementierung der Bereit-Liste müsste dann wie folgt aussehen: Bit bereit_flag = frei; TCB bereit = NULL // Initialisierung bereit.put(tcb element) { // fügt vorne an Sperren(bereit_flag); // Referenzparameter! element->next = bereit; bereit = element; Freigabe(bereit_flag); Universelles Problem: Tritt überall dort auf, wo es kritische Abschnitte gibt Die Frage jetzt: Wie implementiere ich die Eintritts- und Austrittsprotokolle? Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 9

Übersicht Einführung: Kritische Abschnitte Hardwaregestützte Mechanismen Unterbrechungssperren Spezielle Hardware-Befehle Betriebssystemgestützter Mechanismus: Semaphore Sprachgestützter Mechanismus: Monitore Realisierungsbeispiele Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 10

Atomare Operationen Implementierung von Sperren und Freigabe setzt Kenntnisse über die verwendete Hardware voraus Wichtigste Frage: Welche Operationen werden garantiert ununterbrochen (atomar) durchgeführt? Beispiel: Zuweisung x=y; in Java oder C In der Regel nicht atomar: Wird in eine Reihe von Lade und Speicherbefehlen übersetzt: LOAD Register, Y STORE X, Register Dazwischen kann eine Unterbrechung erfolgen Prozessoren besitzen in der Regel atomare Befehle, die speziell zur Implementierung von Sperren und Freigabe geeignet sind Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 11

Sperren der Interrupts Problem: Unterbrechungen im kritischen Abschnitt Lösung: Sperren der Interrupts Kritischer Abschnitt kann jetzt einfach implementiert werden:... Disable; // Interrupts off kritischer Abschnitt Enable; // Interrupts on... Eigenheiten: Darf nur im Supervisor Mode gemacht werden Gefahr bei langem Ausschalten der Interrupts Funktioniert nicht bei Mehrprozessorsystemen Sollte nur bei relativ kurzen kritischen Abschnitten im Betriebssystemkern gemacht werden Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 12

Verbesserung mit Sperrflag Kritische Abschnitte können ausgedehnt werden, wenn man nur den Zugriff auf ein Sperrflag per Enable/Disable schützt Bit Sperrflag = frei; Sperren() { Disable; while (Sperrflag == belegt) { Enable; NOP; Disable; Sperrflag = belegt; Enable; Freigabe() { Sperrflag = frei; Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 13

Test&Set/Lock Viele Prozessoren bieten eine spezielle Hardware-Instruktion an, mit der man ohne Enable und Disable auskommt Beispiel: Test&Set Globales Sperrflag busy initial auf false Test&Set(busy, local) [[...]] bedeutet: wird atomar von Hardware durchgeführt Kopiert Sperrflag busy nach local (Test) und setzt anschliessend das Sperrflag (Set) Pseudocode: TAS(busy, local) = [[ local = busy; busy = true; ]] Man kann anschliessend durch Überprüfen von local herausfinden, ob man "der erste" war Anderes Beispiel: Lock Bit Lock() = [[ tmp = busy; busy = true; return tmp; ]] Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 14

Implementierung Jetzt kann man Sperren und Freigabe ohne Rückgriff auf privilegierte Operationen implementieren Bit busy = false; Sperren() { // Variante mit TAS repeat TAS(busy, local); until (local == false); Freigabe() { busy = false; Sperren() { // Variante mit Lock() while (Lock() == true) NOP; Freigabe() { busy = false; Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 15

Zusammenfassung Konstruktion mit TAS/Lock() wird als Spin Lock bezeichnet Spin Lock ist eine "erlaubte Form aktiven Wartens" Erlaubt nur dann, wenn kritische Abschnitte generell sehr kurz sind Auf Monoprozessorsystemen genügt auf Betriebssystemebene das Ausschalten der Interrupts Spin Lock wird nicht benötigt Auf Multiprozessorsystemen muss man manchmal Spin Locks verwenden Zunächst lokal auf dem Prozessor Interrupts ausschalten (lokaler Ausschluss) Anschliessend im Spin Lock den globale Ausschluss erreichen mehr in der Übung Auf höheren Ebenen kann man durch sinnvolle Abstraktionen aktives Warten (fast) ganz vermeiden Vorlesung Betriebssysteme, Universität Mannheim, Herbstsemester 2010, Teil 6 16