Prozeß-Interaktion u. -Kommunikation

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

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

Übung zu Grundlagen der Betriebssysteme. 10. Übung

Domänenmodell: Fadenkommunikation und -synchronisation

Deadlocks. Christoph Lindemann. Betriebssysteme. Betriebssysteme WS 2004/05. Fahrplan. Inhalt. Das Deadlock Problem

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

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

Kapitel 5 Verklemmungsprobleme. Verklemmungsprobleme

Softwarelösungen: Versuch 4

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

Inhaltsverzeichnis. 4.1 Systemmodell und notwendige Bedingungen. 4.2 Gegenmaßnahmen

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

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

Parallele Prozesse. Prozeß wartet

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

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

Technische Informatik II

9. Vorlesung Betriebssysteme

Kapitel 2: Betriebssysteme

Betriebssysteme (BS)

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

Monitore. Klicken bearbeiten

Übung Betriebssysteme 11

Motivation. Motivation

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

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

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

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

Verbessertes Konzept: Monitore

OSEK / OSEKtime Ausgewählte Kapitel eingebetteter Systeme

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

KV Betriebssysteme (Peter René Dietmüller, Michael Sonntag) Synchronisation

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Wolfram Burgard

Gliederung. Monitor (eine auf ein Modul bezogene) Klasse

Verklemmungen. Überblick. Verklemmungsarten (deadlock, lifelock) und -szenarien...2. notwendige und hinreichende Bedingungen...12

Nebenläufigkeit mit Java

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

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

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

I Grundlagen der parallelen Programmierung 1

Betriebssysteme (BTS)

Betriebssystembau (BSB)

Betriebssysteme - Deadlocks

Nebenläufige Programmierung

Operating System Kernels

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

Klausur zum Kurs Betriebssysteme (1802) am 19. September 2009

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

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

Mutual Exclusion und Synchronisation. Peter Puschner Institut für Technische Informatik

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

Betriebssysteme Theorie

Aufgaben zum Thema Verklemmungen

Systeme 1. Kapitel 5. Scheduling

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

9 Verteilte Verklemmungserkennung

Informatik B - Objektorientierte Programmierung in Java. Vorlesung 21: Threads 2. Inhalt

6. Tutorium zu Softwaretechnik I

Inhaltsverzeichnis. Rainer Oechsle. Parallele und verteilte Anwendungen in Java ISBN: Weitere Informationen oder Bestellungen unter

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

Parallele Programmabläufe: R S

Thread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java

Beispiel für überladene Methode

Prozesse und Scheduling

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008

VORSTELLUNG DER DIPLOMARBEIT

Grundkurs Betriebssysteme

Parallele und verteilte Anwendungen in Java

#define N 5 // Anzahl der Philosophen. while (TRUE) { // Der Philosoph denkt

OSEK / OSEKtime - ein Vergleich

Systeme I: Betriebssysteme Kapitel 7 Scheduling. Maren Bennewitz

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003

Betriebssysteme Kapitel E : Prozesse

Kapitel 2: Betriebssysteme

Grundlagen Rechnerarchitektur und Betriebssysteme

Konflikte. Konflikt-Äquivalenz von Read/Write-Plänen, Konflikt-Serialisierbarkeit

Klausur zur Vorlesung Grundlagen der Betriebssysteme WS 2011 / 2012

Böse Überraschungen mit Nebenläufigkeit vermeiden: Am Beispiel von.net

Vorname: Nachname: Matrikelnummer: Klausur. Betriebssysteme

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

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

1.5 Betriebssysteme für RT- Anwendungen: Echtzeitbetriebssysteme

Echtzeit-Multitasking

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Übung zu Grundlagen der Betriebssysteme. 7. Übung

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

Steffen Heinzl Markus Mathes. Middleware in Java

Präzedenz von Operatoren

Systemsoftware (SYS)

Java Threads. Mutex, Race Condition, Deadlock, Starvation und Co.. Prof. Dr. Nikolaus Wulff

9 Multithreading. 1 Idee des Multithreading

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Kapitel 4. Monitore und wechselseitiger Ausschluss

Grundkurs Betriebssysteme

RTEMS- Echtzeitbetriebssystem

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

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

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

Transkript:

Definitionen: Prozeß: (Vorgang der) Programmausführung Interaktion: aufeinander bezogenes Handeln Kommunikation: Bidirektionaler (allg.: multidirektionaler) Austausch von Information Information: Daten, die in Entscheidungen einfließen Daten: Angaben, die etwas kennzeichnen. 'Angaben : Nennungen, Behauptungen, Schilderungen, Aussagen, Äußerungen über gemessene, erhobene, geschätzte, angenommene Zahlenwerte, Zeichen, Funktionen,... ('ABC ; oder: quadratisch mit der Zeit ) 'etwas : Objekt, Gegenstand, Ereignis, Prozeß, Ablauf,... (z.b.: 'elektrisches Potential oder 'Gefährdungspotential ) 'kennzeichnen : Interpretation macht aus Angaben Daten ( SCHWARZ als Personenname oder Haarfarbe) Karl Valentin

Mit der Möglichkeit zur Interaktion und Kommunikation stellt sich die Frage nach Nebenläufigkeit (concurrency), Parallelisierung u. Synchronisation betrachteter Prozesse. Nebenläufigkeit: Eignung von Vorgängen zur voneinander unabhängigen Ausführung Parallelisierung: Vorbereitung zur quasi-gleichzeitigen oder (im Mehrprozessor-Betrieb) gleichzeitigen Ausführung Synchronisation: Erzwingung des Zeitpunkts und/oder der Reihenfolge der Ausführung von Anweisungen unterschiedlicher Prozesse (meist zur Ermöglichung einer kollisionsfreien parallelen Ausführung) Wichtige Grundmuster der Prozeßsynchronisation: Nachrichtenübertragung (message passing) vgl.callback-übg Schranke (Hürde, Barriere; barrier) vgl. Double Buffering Wechselseitiger Ausschluß (mutual exclusion) s.u.

Anspruch korrekter Prozeßsynchronisation: Bei sequentiellen Programmen hauptsächlich zwei Arten logischer Fehler: Undefinierte Operationen und Nichtterminierung. FILE *memo; char ch; /*...*/ fprintf(memo,"a"); fflush(memo); fseek (memo, -1L, SEEK_CUR); fscanf(memo,"%1c", &ch); clock_t tnow,tend; tend=clock()+10*clocks_per_sec; while(tend!=tnow) tnow=clock(); > Durch Parallelität verändern sich Ressourcen-Verfügbarkeit und Daten laufend; dadurch kann neben Daten-Inkonsistenz ein Fehler besonderer Art entstehen: Blockierung: Warten auf Ereignisse, die nicht eintreten....wollen /...können

Anmerkungen: Ungesteuerte Nutzung gemeinsamer Ressourcen kann bewirken, daß Prozeß-Ergebnisse von Zeitpunkt und Dauer der Ressourcen-Zuweisung abhängen; solche Situationen nennt man Wettbewerbsbedingungen (Race Conditions, RC). Die Verhinderung bzw. Behebung von RC ist eine wichtige Aufgabe der Prozeßsynchronisation; dazu werden sog. kritische Abschnitte (auch: krit. Bereiche Critical Sections / Regions, CS) eines Prozesses identifiziert, d.h. Programmteile (=Anweisungsfolgen), die in Konkurrenz mit anderen Prozessen dieselben exklusiv nutzbaren Ressourcen beanspruchen. Die Prozeßsynchronisation konzentriert sich dann auf die Regelungen zum Eintritt / Verbleib von Prozessen in ihren kritischen Abschnitten. Die Realisierung einer kontrollierten Ressourcen-Zuweisung kann u.u. die Entstehung der 3 Blockierungsarten begünstigen:

Erhält ein Prozeß keine Zuteilung wichtiger System- Ressourcen, so sagt man, daß er verhungert (to starve, starvation). auch: Hase-und-Igel-Spiel : meist: durch Prozesse höherer Priorität ausgehungert. Charakteristika: oft von endlicher Dauer; Aktivität beschränkt sich auf Akquisitionsversuche

Eine Situation, in der ein Prozeß beständig um die Nutzung von Systemressourcen gebracht wird, nennt man eine Blockade oder einen Livelock. auch: nicht abbrechende Ausführung : meist: Interprozeß-Kommunikation, lineare Wartebeziehungen Prozeß verwaltet nur noch sich selbst. Charakteristika: von unbestimmter Dauer; zweckfremde Aktivität

Eine beständige zyklische Wartebeziehung bezeichnet man als Verklemmung oder (einen) Deadlock. auch: nicht abbrechende Blockierung meist: Einzel-Reservierung gemeinsam benötigter Ressourcen Prozeß wartet auf Ereignisse, die nicht eintreten können. Charakteristika: 1. Stillstand: Beteiligte Prozesse können ihr Vorhaben nicht fortsetzen (blockiert). 2. Permanenz: Keine spontane Auflösung; zusätzliche Maßnahmen notwendig. 3. Zufälligkeit: Auftreten bei manchen Ausführungen, bei anderen dagegen nicht.

Gleichzeitiges Auftreten von vier Bedingungen ist notwendig und hinreichend für einen Deadlock: tatisch dynamisch 1. Exklusiv nutzbare Ressourcen (serially reusable) Betriebsmittel, deren Nutzung zu einem konkreten Zeitpunkt höchstens einem Prozeß vorbehalten ist und nicht unterbrochen werden darf (Wechselseitiger Ausschluß engl. mutual exclusion). 2. Nichtentziehbarkeit (non-preemption) Einmal zugewiesene Betriebsmittel werden von Prozessen selbständig o. bei Terminierung zurückgegeben u. können nicht entzogen werden. 3. Inkrementelle Akquisition Prozesse können Betriebsmittel halten, während sie auf die Freigabe weiterer Betriebsmittel durch andere Prozesse warten. 4. Zyklische Wartebeziehung (circular wait) Es gibt eine geschlossene Kette von Prozessen, in der jeder Prozeß auf die Freigabe eines Betriebsmittels durch seinen Nachfolger wartet.

Deadlock-Freiheit ist schwer zu gewährleisten und kaum zu beweisen (keine allgemein akzeptierte Prüfmethode)! Anti-Deadlock-Strategien: Vorbeugung (Prevention) Prinzipielle Verhinderung der Erfüllung aller 4 Voraussetzgn: präemptive Vergabe, gruppenweise Akquisition, Prioritäten Vermeidung (Avoidance) Registrierung bereits erfüllter Voraussetzungen ggf. Nichtgewährung benötigter Ressourcen Erkennung & Auflösung (Detection & Recovery) Gewaltsamer Eingriff von autorisierter Stelle: Ressourcen-Entzug, Prozeß-Beendigung A u f w a n d

Anti-Deadlock-Maßnahmen: Verhinderung zyklischer Wartebeziehung: Zentrale Warteschlange für Ressourcen-Zuweisung Zufallsabhängige Behandlung beteiligter Prozesse Einteilung von Prozeß-Gruppen zur Symmetrie-Brechung Zuteilung ungleicher Prioritäten Verhinderung inkrementeller Akquisition: Gruppenweise Ressourcen-Reservierung Schutz kritischer Abschnitte

Drei Forderungen an die Behandlung kritischer Abschnitte: Wechselseitiger Ausschluß (mutual exclusion): Zu keinem Zeitpunkt darf sich mehr als ein Prozeß (Thread) in seinem kritischen Abschnitt aufhalten. Fortschreiten (progress): Der Prozeß, der als nächster in seinen krit. Abschnitt eintreten darf, soll unter den bereits wartenden ausgewählt werden. Begrenztes Warten (bounded waiting): Einem wartenden Prozeß darf nur begrenzt viele Male der Eintritt in seinen kritischen Abschnitt verwehrt werden. Lösungsansätze: Software-Lösungen (algorithmisch, z.b. innerhalb d. Sw-Umgebung) Hardware-Lösungen (Anwendung spezieller Hardware-Funktionen) Betriebssystem-unterstützte Lösungen (spezielle BS-Funktionen) s.a. BS-Vorlesung

Anmerkungen: Software-Lösungen implizieren aktives Warten und daher Effizienz-Probleme... sind bei Ermangelung effizienterer Lösungen einzusetzen Hardware-Lösungen als Interrupt-Sperrung bei Ein-Prozessor-Systemen vereiteln auch den Wechsel zu anderen Tasks (Multitasking) sind fatal bei Programmabstürzen u. Mißbrauch durch Programmierer als Interrupt-Sperrung bei Mehrprozessor-Systemen sind praktisch wirkungslos, wenn auf nur einen Prozessor beschränkt mit speziellen Hardware-Funktionen für Ein-Prozessor-Systeme ermöglichen wechselstg. Ausschl. mit atomaren read-modify-write-fkt. verursachen bei anderen Prozessen aktives Warten (Effizienz-Probl.) lassen die Maßnahmen für Fortschreiten & begrenztes Warten offen mit speziellen Hardware-Funktionen für Mehrprozessor-Systeme können zudem wg. Alleinverfügung über d. Bus d. System blockieren... sind nützlich vor allem innerhalb des Betriebssystems

Wichtigste BS-unterstützte Lösung: das Semaphor (E.W.Dijkstra, 1965) Wirkungsweise hier: als Sperrvariable (spin lock) mit aktivem Warten: Das allgemeine Semaphor: Das Binäre Semaphor (der Mutex): void P(int *R) void P(int *bs) {(*R)--; /*Res.-Anforderg!*/ { while (*bs==0); while (*R < 0); *bs=0; } } void V(int *R) { (*R)++; } (Initialisierung mit R=N; für N Ressourcen) void V(int *bs) { *bs=1; } (Initialisierung mit bs=1;) Anwendung: P(&bS); /* "Passieren" */ /*...*/ /*krit.abschnitt*/ V(&bS); /* "Verlassen" */ Namen historisch gewachsen; bs äquivalent zu allgem. Semaphor für N=1