9. Foliensatz Betriebssysteme

Ähnliche Dokumente
Beispiel für überladene Methode

Übung zu Grundlagen der Betriebssysteme. 10. Übung

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

Monitore. Klicken bearbeiten

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

Systemsoftware (SYS)

Prozesse und Scheduling

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

Verbessertes Konzept: Monitore

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

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

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

6. Tutorium zu Softwaretechnik I

Verteilte Systeme CS5001

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

Synchronisation in Java. Invisible Web

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

Softwarelösungen: Versuch 4

Lösungsskizzen zur Abschlussklausur Betriebssysteme

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

Übung Betriebssysteme 11

Technische Informatik II

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

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Domänenmodell: Fadenkommunikation und -synchronisation

Betriebssystembau (BSB)

Universität Karlsruhe (TH)

Einführung in die Programmierung Blockkurs Java

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Technische Informa/k II. Prof. Dr. Bernd Freisleben Sommersemester 2013 Kapitel 5: BetriebsmiCelverwaltung

Prozessor (CPU, Central Processing Unit)

LeJOS: Mindstorms in Java programmieren

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel

13. Übung mit Musterlösung

Das Monitorkonzept Brinch-Hansen

Kapitel 4. Monitore und wechselseitiger Ausschluss

Proseminar Nichtsequentielle Programmiersprachen WS 2011/2012 Monitore

Vorlesung Betriebssysteme

5. Threads, Serverprozesse und Benachrichtigungen

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

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

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

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

Gliederung. Monitor (eine auf ein Modul bezogene) Klasse

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

Zusammenfassung Modul 223

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

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

9 Multithreading. 1 Idee des Multithreading

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

9 Verteilte Verklemmungserkennung

Java Einführung Methoden. Kapitel 6

Repetitorium Informatik (Java)

Probeklausur: Programmierung WS04/05

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

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

Beispiel Klausuraufgaben

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

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

2.2 Prozesse in Java

Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr.

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

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

2. Hintergrundverarbeitung in Android: Services und Notifications

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Multi-Threading. Ralf Abramowitsch Vector Informatik GmbH

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

OSEK / OSEKtime Ausgewählte Kapitel eingebetteter Systeme

Musterlösung Prüfung SS 2002

Parallele Programmierung in Java

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

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

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

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

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

Client-Server-Beziehungen

12. Threads in Java. Sequentielle Abarbeitung (2) Beispiel: Thread (1) Sequentielle Abarbeitung (1)

Musterlösung der Abschlussklausur Betriebssysteme

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

Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll. Aufgabe 1 Transferfragen (Lösungsvorschlag)

Übersicht. Vorstellung des OO-Paradigmas

Probeklausur: Programmierung WS04/05

Datenbanken und Informationssysteme

Betriebssysteme Theorie

Nebenläufige Programmierung

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Kapitel 12 Integrität der Datenbank

Betriebssysteme (BTS)

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Propädeutikum zur Programmierung

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Prof. Dr.-Ing. Dagmar Meyer Architekturen verteilter SW-Systeme 5 SYNCHRONISATION

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Objektorientierte Programmierung

8. Synchronisations-Verfahren

Datenintegrität und Transaktionskonzept

1. Grundlegende Konzepte in Java (6 Punkte)

Transkript:

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 1/32 9. Foliensatz Betriebssysteme Prof. Dr. Christian Baun Frankfurt University of Applied Sciences (1971 2014: Fachhochschule Frankfurt am Main) Fachbereich Informatik und Ingenieurwissenschaften christianbaun@fb2.fra-uas.de

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 2/32 Lernziele dieses Foliensatzes Am Ende dieses Foliensatzes kennen/verstehen Sie... was kritische Abschnitte sind wie Wettlaufsituationen (Race Conditions) entstehen welche Konsequenzen Wettlaufsituationen haben den Unterschied zwischen Kommunikation und Kooperation was Synchronisation ist verschiedene Möglichkeiten mit Signalisierung eine Ausführungsreihenfolge der Prozesse festzulegen wie mit Blockieren kritische Abschnitte gesichert werden können welche Probleme beim Blockieren entstehen können den Unterschied zwischen Verhungern und Deadlocks die Bedingungen, die für die Entstehung von Deadlocks nötig sind wie Betriebsmittel-Graphen die Beziehungen von Prozessen und Ressourcen darstellen wie Deadlock-Erkennung mit Matrizen funktioniert Übungsblatt 9 wiederholt die für die Lernziele relevanten Inhalte dieses Foliensatzes

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 3/32 Interprozesskommunikation (IPC) Prozesse müssen nicht nur Operationen auf Daten ausführen, sondern auch: sich gegenseitig aufrufen aufeinander warten sich abstimmen kurz gesagt: Sie müssen miteinander interagieren Bei Interprozesskommunikation (IPC) ist zu klären: Wie kann ein Prozess Informationen an andere weiterreichen? Wie können mehrere Prozesse auf gemeinsame Ressourcen zugreifen? Frage: Wie verhält es sich hier mit Threads? Bei Threads gelten die gleichen Herausforderungen und Lösungen wie bei Interprozesskommunikation mit Prozessen Nur die Kommunikation zwischen den Threads eines Prozesses ist problemlos möglich, weil sie im gleichen Adressraum agieren

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 4/32 Kritische Abschnitte Laufen mehrere parallel ausgeführte Prozesse, unterscheidet man: Unkritische Abschnitte: Die Prozesse greifen gar nicht oder nur lesend auf gemeinsame Daten zu Kritische Abschnitte: Die Prozesse greifen lesend und schreibend auf gemeinsame Daten zu Kritische Abschnitte dürfen nicht von mehreren Prozessen gleichzeitig durchlaufen werden Damit Prozesse auf gemeinsam genutzten Speicher (= Daten) zugreifen können, ist wechselseitiger Ausschluss (Mutual Exclusion) nötig

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 5/32 Kritische Abschnitte Beispiel: Drucker-Spooler Prozess X next_free_slot = in; (16) Speichere Eintrag in next_free_slot; (16) in = next_free_slot + 1; (17) Prozesswechsel Prozesswechsel Prozess Y next_free_slot = in; (16) Speichere Eintrag in next_free_slot; (16) in = next_free_slot + 1; (17) Das Spooler-Verzeichnis ist konsistent Aber der Eintrag von Prozess Y wurde von Prozess X überschrieben und ging verloren Eine solche Situation heißt Race Condition

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 6/32 Race Condition (Wettlaufsituation) Unbeabsichtigte Wettlaufsituation zweier Prozesse, die den Wert der gleichen Speicherstelle ändern wollen Das Ergebnis eines Prozesses hängt von der Reihenfolge oder dem zeitlichen Ablauf anderer Ereignisse ab Häufiger Grund für schwer auffindbare Programmfehler Problem: Das Auftreten und die Symptome hängen von unterschiedlichen Ereignissen ab Bei jedem Testdurchlauf können die Symptome unterschiedlich sein oder verschwinden Vermeidung ist u.a durch das Konzept der Semaphore (= Foliensatz 10) möglich

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 7/32 Therac-25: Race Condition mit tragischem Ausgang (1/2) Therac-25 ist ein Elektronen-Linearbeschleuniger zur Strahlentherapie von Krebstumoren Verursachte Mitte der 80er Jahre in den USA Unfälle durch mangelhafte Programmierung und Qualitätssicherung Einige Patienten erhielten eine bis zu hundertfach erhöhte Strahlendosis Bildquelle: Google Bildersuche

Therac-25: Race Condition mit tragischem Ausgang (2/2) An Investigation of the Therac-25 Accidents. Nancy Leveson, Clark S. Turner IEEE Computer, Vol. 26, No. 7, July 1993, S.18-41 http://courses.cs.vt.edu/~cs3604/lib/therac_25/therac_1.html 3 Patienten starben wegen Programmfehlern 2 Patienten starben durch eine Race Condition, die zu inkonsistenten Einstellungen des Gerätes und damit zu erhöhter Strahlendosis führte Der Kontroll-Prozess synchronisierte nicht korrekt mit dem Prozess der Eingabeaufforderung Der Fehler trat nur dann auf, wenn die Bedienung zu schnell erfolgte Bei Tests trat der Fehler nicht auf, weil es Erfahrung (Routine) erforderte, um das Gerät so schnell zu bedienen Bildquelle: http://www.ircrisk.com/blognet/ Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 8/32

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 9/32 Die Prozessinteraktion besitzt 2 Aspekte... 1 Funktionaler Aspekt: Kommunikation und Kooperation Kommunikation (= expliziter Datentransport) Prozess 1 Prozess 2 Kooperation (= Zugriff auf gemeinsame Daten) Prozess 1 Prozess 2 Daten 1 Daten 2 Kopieren Daten 1 gemeinsamer Teil Daten 2 (gerichtete Beziehung) (symmetrische Beziehung) 2 Zeitlicher Aspekt: Synchronisation

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 10/32 Interaktionsformen Kommunikation und Kooperation basieren auf Synchronisation Synchronisation ist die elementarste Form der Interaktion Grund: Kommunikation und Kooperation benötigen eine zeitliche Abstimmung zwischen den Intaraktionspartnern, um korrekte Ergebnisse zu erhalten Darum behandeln wir zuerst die Synchronisation

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 11/32 Synchronisation Signalisieren Aktives Warten (Busy Waiting) Signalisieren und Warten Rendezvous Gruppensignalisierung Gruppensynchronisierung mit Barrieren Blockieren Sperren und Freigeben

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 12/32 Signalisierung Spezielle Art der Synchronisation Mit Signalisierung wird eine Ausführungsreihenfolge festgelegt Beispiel: Abschnitt X von Prozess 1 soll vor Abschnitt Y von Prozess 2 ausgeführt werden Die Operation signal signalisiert, wenn Prozess 1 den Abschnitt X abgearbeitet hat Prozess 2 muss eventuell auf das Signal von Prozess 1 warten Prozess 1 Prozess 2 X signal(s) wait(s) Y

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 13/32 Einfachste Form der Signalisierung (aktives Warten) signal(s) wait(s) set s is s set? no reset s Vorgehensweise: Aktives Warten an der Signalvariable s Rechenzeit der CPU wird verschwendet, weil diese immer wieder von dem Prozess belegt wird Diese Technik heißt auch Warteschleife

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 14/32 Signalisieren und Warten Besseres Konzept: Prozess 2 blockieren, bis Prozess 1 den Abschnitt X abgearbeitet hat Vorteil: Die CPU wird entlastet Nachteil: Es kann nur ein Prozess warten signal(s) wait(s) set s is s set? no yes process waiting? block process yes no deblock process reset s

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 15/32 Signalisieren und Warten unter JAVA Unter JAVA heißt die signal()-operation notify() notify() deblockiert einen wartenden Thread wait() blockiert die Ausführung eines Threads Das Schlüsselwort synchronized sorgt unter JAVA für gegenseitigen Ausschluss aller damit gekennzeichneten Methoden eines Objekts 1 class Signal { 2 private boolean set = false; // Signalvariable deklarieren 3 4 public synchronized void signal() { 5 set = true; // Signalvariable ändern 6 notify(); // deblockiert den wartenden Thread (sofern vorhanden) 7 } 8 9 public synchronized void wait() { 10 if (!set) { // Wenn die Signalvariable nicht auf true gesetzt ist... 11 wait(); // blockiert den Thread => wartet auf das Signal 12 set = false; // Signalvariable ändern 13 } 14 } 15 } Bei diesem JAVA-Beispiel und den folgenden JAVA-Beispielen fehlt u.a.... main-methode, Objektinstanziierung mit Threads... Mehr Informationen: http://docs.oracle.com/javase/7/docs/api/?java/lang/thread.html

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 16/32 Rendezvous Werden wait() und signal() symmetrisch ausgeführt, werden die Abschnitte X1 und Y1 vor den Abschnitten X2 und Y2 ausgeführt In einem solchen Fall synchronisieren die Prozesse 1 und 2

Rendezvous sync() Implementierung einer Synchronisierung (Rendezvous) mit JAVA Die Methode sync() fasst die Operationen wait() und signal() zusammen 1 class Synchronisierung { 2 private boolean set = false; // Signalvariable deklarieren 3 4 public synchronized void sync() { 5 if (set == false) { // ich bin der erste Thread 6 set = true; // Signalvariable ändern 7 wait(); // blockiert den Thread => wartet auf das Signal 8 } else { // ich bin der zweite Thread 9 set = false; // Signalvariable ändern 10 notify(); // deblockiert den wartenden Thread (sofern vorhanden) 11 } 12 } 13 } Hilfreiche Quellen zum Thema... Carsten Vogt, Nebenläufige Programmierung Ein Arbeitsbuch mit UNIX/LINUX und JAVA, Hanser (2012) S.137-141 David Flanagan, JAVA in a Nutshell, deutsche Übersetzung der 3. Auflage, O Reilly Verlag (2000), S.166 Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 17/32

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 18/32 Gruppensignalisierung Signalisierung mit > 2 Prozessen Beispiele: UND-Signalisierung: Ein Prozess läuft erst weiter, wenn mehrere Prozesse ein Signal aufrufen ODER-Signalisierung: Mehrere Prozesse warten auf ein Signal Erfolgt das Signal, wird einer der wartenden Prozesse deblockiert

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 19/32 Gruppenrendezvous mit Barriere Eine Barriere synchronisiert die beteiligten Prozesse an einer Stelle Prozess 1 Prozess 2 Prozess 3 Prozess 4 X1 sync(s) X1 sync(s) X2 X1 sync(s) X1 sync(s) X2 X2 X2 Erst wenn alle Prozesse die Synchronisationsstelle erreicht haben, dürfen sie weiterlaufen 1 class BarrierenSynchronisation { 2 private int summe = p; // Anzahl Prozesse 3 private int zaehler = 0; // Anzahl wartende Prozesse 4 5 public synchronized void sync() { 6 zaehler = zaehler + 1; 7 if (zaehler < summe) { // es fehlen noch Prozesse 8 wait(); // auf die fehlenden Prozesse warten 9 } else { // es sind alle Prozesse eingetroffen 10 notifyall(); // alle wartenden Prozesse deblockieren 11 zaehler = 0; 12 } 13 } 14 }

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 20/32 Blockieren (Sperren und Freigeben) Mit Sperren sichert man kritische Abschnitte Sperren garantieren, dass es bei der Abarbeitung von 2 kritischen Abschnitten keine Überlappung gibt Beispiel: Kritische Abschnitte X von Prozess 1 und Y von Prozess 2

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 21/32 Unterschied zwischen Signalisieren und Blockieren Signalisieren legt die Ausführungsreihenfolge fest Beispiel: Abschnitt A von Prozess 1 vor Abschnitt B von 2 ausführen Blockieren sichert kritische Abschnitte Die Reihenfolge, in der die Prozesse ihre kritische Abschnitte abarbeiten, ist nicht festgelegt! Es wird nur sichergestellt, dass es keine Überlappung in der Ausführung der kritischen Abschnitte gibt 1 class Sperre { 2 private boolean gesperrt = false; // Signalvariable 3 4 public synchronized void sperre() { 5 while(gesperrt) 6 wait(); // auf die fehlenden Prozesse warten 7 gesperrt = true; // den Prozess sprerren 8 } 9 10 public synchronized void entsperren() { 11 gesperrt = false; // Sperre des Prozesses aufheben 12 notify(); // alle wartenden Prozesse benachrichtigen 13 } 14 }

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 22/32 Probleme, die durch Blockieren entstehen Bildquelle: Google Bildersuche Verhungern (Starvation) Hebt ein Prozess eine Sperre nicht wieder auf, müssen die anderen Prozesse unendlich lange auf die Freigabe warten Verklemmung (Deadlock) Es warten mehrere Prozesse gegenseitig auf die von ihnen gesperrten Ressourcen, sperren sie sich gegenseitig Da alle am Deadlock beteiligten Prozesse (ewig) warten, kann keiner ein Ereignis auslösen, dass die Situation auflöst

Bedingungen für Deadlocks System Deadlocks. E. G. Coffman, M. J. Elphick, A. Shoshani. Computing Surveys, Vol. 3, No. 2, June 1971, S.67-78. http://people.cs.umass.edu/~mcorner/courses/691j/papers/ts/coffman_deadlocks/coffman_deadlocks.pdf Damit ein Deadlock entstehen kann, müssen folgende Bedingungen gleichzeitig erfüllt sein: Wechselseitiger Ausschluss (mutual exclusion) Mindestens 1 Ressource wird von genau einem Prozess belegt oder ist verfügbar = nicht gemeinsam nutzbar (non-sharable) Anforderung weiterer Betriebsmittel (hold and wait) Ein Prozess, der bereits mindestens 1 Ressource belegt, fordert weitere Ressourcen an, die von einem anderen Prozess belegt sind Ununterbrechbarkeit (no preemption) Die Ressourcen, die ein Prozess besitzt, können nicht vom Betriebssystem entzogen, sondern nur durch ihn selbst freigegeben werden Zyklische Wartebedingung (circular wait) Es gibt eine zyklische Kette von Prozessen Jeder Prozess fordert eine Ressource an, die der nächste Prozess in der Kette besitzt Fehlt eine Bedingung, ist ein Deadlock unmöglich Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 23/32

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 24/32 Betriebsmittel-Graphen Mit gerichteten Graphen können die Beziehungen von Prozessen und Ressourcen dargestellt werden Mit Betriebsmittel-Graphen kann man Deadlocks modellieren Bei den Knoten eines Betriebsmittel-Graphen handelt es sich um: Prozesse: Sind als Kreise dargestellt Ressourcen: Sind als Rechtecke dargestellt Eine Kante von einem Prozess zu einer Ressource bedeutet: Der Prozess ist blockiert, weil er auf die Ressource wartet Eine Kante von einer Ressource zu einem Prozess bedeutet: Der Prozess belegt die Ressource

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 25/32 Beispiel zu Betriebsmittel-Graphen Es existieren 3 Prozesse: P1, P2 und P3 Jeder Prozess fordert 2 Ressourcen an und gibt diese dann wieder frei Prozess P1 Prozess P2 Prozess P3 Anforderung R1 Anforderung R2 Anforderung R3 Anforderung R2 Anforderung R3 Anforderung R1 Freigabe R1 Freigabe R2 Freigabe R3 Freigabe R2 Freigabe R3 Freigabe R1 Beispiel aus Tanenbaum. Moderne Betriebssysteme. Pearson Studium. 2003 Quellen Eine umfangreiche Beschreibung zu Betriebsmittel-Graphen enthält das Buch Betriebssysteme Eine Einführung, Uwe Baumgarten, Hans-Jürgen Siegert, 6.Auflage, Oldenbourg Verlag (2007), Kapitel 6

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 26/32 Keine Nebenläufigkeit: P1 P2 P3 P1 fordert R1 an P1 fordert R2 an P1 gibt R1 frei P1 gibt R2 frei P2 fordert R2 an P2 fordert R3 an P2 gibt R2 frei P2 gibt R3 frei P3 fordert R3 an P3 fordert R1 an P3 gibt R3 frei P3 gibt R1 frei Kein Deadlock

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 27/32 Nebenläufigkeit mit schlechter Reihenfolge P1 fordert R1 an P2 fordert R2 an P3 fordert R3 an P1 fordert R2 an P2 fordert R3 an P3 fordert R1 an Deadlock wegen Zyklus

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 28/32 Nebenläufigkeit mit besserer Reihenfolge P1 fordert R1 an P3 fordert R3 an P1 fordert R2 an P3 fordert R1 an P1 gibt R1 frei P1 gibt R2 frei P3 gibt R1 frei P3 gibt R3 frei P2 fordert R2 an P2 fordert R3 an P2 gibt R2 frei P2 gibt R3 frei

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 29/32 Deadlock-Erkennung mit Matrizen Gibt es nur eine Ressource pro Ressourcenklasse (Scanner, CD-Brenner, Drucker, usw.), kann man Deadlocks mit Graphen darstellen/erkennen Existieren von einer Ressource mehrere Kopien, kann ein matrizenbasierter Algorithmus verwendet werden Wir definieren 2 Vektoren Ressourcenvektor (Existing Resource Vektor) Zeigt an, wie viele Ressourcen von jeder Klasse existieren Ressourcenrestvektor (Available Resource Vektor) Zeigt an, wie viele Ressourcen von jeder Klasse frei sind Zusätzlich sind 2 Matrizen nötig Belegungsmatrix (Current Allocation Matrix) Zeigt an, welche Ressourcen die Prozesse aktuell belegen Anforderungsmatrix (Request Matrix) Zeigt an, welche Ressourcen die Prozesse gerne hätten

Deadlock-Erkennung mit Matrizen Beispiel (1/2) Quelle des Beispiels: Tanenbaum. Moderne Betriebssysteme. Pearson. 2009 Ressourcenvektor = ( 4 2 3 1 ) Ressourcenrestvektor = ( 2 1 0 0 ) 4 Ressourcen von Klasse 1 existieren 2 Ressourcen von Klasse 2 existieren 3 Ressourcen von Klasse 3 existieren 1 Ressource von Klasse 4 existiert [ 0 ] 0 1 0 Belegungsmatrix = 2 0 0 1 0 1 2 0 2 Ressourcen von Klasse 1 sind frei 1 Ressource von Klasse 2 ist frei Keine Ressourcen von Klasse 3 sind frei Keine Ressourcen von Klasse 4 sind frei [ 2 ] 0 0 1 Anforderungsmatrix = 1 0 1 0 2 1 0 0 Prozess 1 belegt 1 Ressource von Klasse 3 Prozess 2 belegt 2 Ressourcen von Klasse 1 und 1 Ressource von Klasse 4 Prozess 3 belegt 1 Ressource von Klasse 2 und 2 Ressourcen von Klasse 3 Prozess 1 ist blockiert, weil keine Ressource von Klasse 4 frei ist Prozess 2 ist blockiert, weil keine Ressource von Klasse 3 frei ist Prozess 3 ist nicht blockiert Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 30/32

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 31/32 Deadlock-Erkennung mit Matrizen Beispiel (2/2) Wurde Prozess 3 fertig ausgeführt, gibt er seine Ressourcen frei Ressourcenrestvektor = ( 2 2 2 0 ) Anforderungsmatrix = 2 Ressourcen von Klasse 1 sind frei 2 Ressourcen von Klasse 2 sind frei 2 Ressourcen von Klasse 3 sind frei Keine Ressourcen von Klasse 4 sind frei Wurde Prozess 2 fertig ausgeführt, gibt er seine Ressourcen frei [ 2 0 0 1 1 0 1 0 Prozess 1 kann nicht laufen, weil keine Ressource vom Typ 4 frei ist Prozess 2 ist nicht blockiert Ressourcenrestvektor = ( 4 2 2 1 ) Anforderungsmatrix = Prozess 1 ist nicht blockiert = kein Deadlock in diesem Beispiel [ 2 0 0 1 ] ]

Prof. Dr. Christian Baun 9. Foliensatz Betriebssysteme Frankfurt University of Applied Sciences SS2016 32/32 Fazit zu Deadlocks Manchmal wird die Möglichkeit von Deadlocks akzeptiert Entscheidend ist, wie wichtig ein System ist Ein Deadlock, der statistisch alle 5 Jahre auftritt, ist kein Problem in einem System das wegen Hardwareausfällen oder sonstigen Softwareproblemen jede Woche ein mal abstürzt Deadlock-Erkennung ist aufwendig und verursacht Overhead In allen Betriebssystemen sind Deadlocks möglich: Prozesstabelle voll Es können keine neuen Prozesse erzeugt werden Maximale Anzahl von Inodes vergeben Es können keine neuen Dateien und Verzeichnisse angelegt werden Die Wahrscheinlichkeit, dass so etwas passiert, ist gering, aber 0 Solche potentiellen Deadlocks werden akzeptiert, weil ein gelegentlicher Deadlock nicht so lästig ist, wie die ansonsten nötigen Einschränkungen (z.b. nur 1 laufender Prozess, nur 1 offene Datei, mehr Overhead)