Betriebssysteme Übung 2. Tutorium. Task 1 – Locks (1) Wozu Locks? Dienen dazu, exklusiven Zugriff auf eine Ressource sicherzustellen Lock = binäre Semaphore.

Slides:



Advertisements
Ähnliche Präsentationen
Monitore in Java++ Aufgabe 2 von Markus Schlebusch Christoph Reinboth Sebastian Zok Johannes Stolte Norman Zuther.
Advertisements

Vertieferseminar Geoinformation WS 02/03
Kapitel 11 Deadlocks RW-Systemarchitekur Kap. 11.
10.2 Wechselseitiger Ausschluss in Hardware
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
C Tutorium – Semaphoren –
Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;
Kapitel 6.1 Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 7 Deadlocks WS 2009/10.
Kapitel 7.2 Dining philosophers problem
FH-Hof Deadlocks Richard Göbel. FH-Hof Deadlock - Definition Menge von Prozessen ist an einem Deadlock beteiligt: wenn jeder Prozess in dieser Menge auf.
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Kapitel 10 Nebenläufigkeit und wechselseitiger Ausschluss
Nebenläufige Programmierung
Vorlesung 10 Mutual Exclusion Peter B. Ladkin Sommersemester 2001 Universität Bielefeld Technische Fakultät.
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
Klarer Weg – Gemeinsame Ziele! Berliner Fußball-Verband e.V. Vorbereitung zum Jahresregeltest Schnelltquiz.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Java Threads Sebastian Werler
Entwicklung verteilter eingebetteter Systeme - Einführung
Veränderungen der Regelauslegungen Rückrunde Saison 2007/2008.
Kapitel 1 – Erste Schritte
Prozess-synchronisation
Parallel Matrix Multiplication
Parallel Programming Condition Queues
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Von Frauen für Frauen (die Männer dürfen‘s auch lesen, aber verstehen werden sie‘s wahrscheinlich nicht…)
Hallo Ich möchte einen Text einer Folie nicht einfach nur einfliegen lassen, sondern genau diesen Text, der schon an einer bestimmten Stelle steht, vergrößern.
ich möchte gern das Pendel einer Uhr animieren.
Das verschwundene Velo
25. September Spreche mit den MitstudentInnen über deinen Tag gestern. Beginne jeden Satz mit einem Adverb wie: Zuerst… Dann… Zunächst… Zweitens.
SCHAFZUCHT.
Garbage Collection unter .NET
Prozess-synchronisation
Thread Synchronisation in JAVA
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
23-Jun-05 Bernhard Tellenbach
MODAL-PARTIKELN.

Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
2. MKT – Die verbale Selbstinstruktion Mi
Letzte Chance!!! Exceptions Thread, Runnable Synchronized Wait, notify, notifyAll Thread States Semaphoren JCSP Swing JOMP Linearizability History Amdahl‘s.
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
Muster nebenläufiger Programmierung concurrent Packet von Java Alois Schütte AOSD1.
Fit Wichtig ist jede Übung 30 Sekunden durchführen. Dabei muss zwischen den Übungen eine 5 Sekunden Pause vorlegen Bei der ersten Übung ist der Hampelmann.
Parallele Programmierung im.NET Framework Darmstadt, Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,
Unsere Vorteile Wir sind da um zu helfen. Die Schüler können mit uns offener reden als mit den Lehrern. Die Schüler sprechen lieber mit uns, weil wir.
Prof. Dr. Alois Schütte Advanced System Programming 1 Das concurrent Paket 1 Überblick 2 Lock 3 Condition 4 Queue 5 Executors.
Synchronisation paralleler Transaktionen  AIFB SS Sperrverfahren Sperrverfahren (13/18) Behandlung von Konflikten bei der Sperrvergabe.
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
2 Nebenläufige Prozesse. 2.1 Programmstruktur und Prozesse private Prozess = Anweisungen + Daten gemeinsame Aber:Wie verhält sich das Konstrukt „Prozess“
1.3 Verklemmungen Synchronisation löst Probleme – ist aber auch Gefahrenquelle: Prozeß wartet an Synchronisationspunkt – ist gesichert, daß er irgendwann.
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
3.2 Bedingungssynchronisation Motivation: Wenn für eine Operation auf einem Objekt die Voraussetzung nicht erfüllt ist, ist es häufig angebracht, auf deren.
Parallel Programming Semaphores / Reader - Writer - Lock
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
1 VE 11 Kruskal-Realisierung Listen. 2 Auf dem Weg zur Kruskal-Realisierung Vorüberlegungen: Der Graph könnte dargestellt werden als Menge von Knoten,
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Exceptions in der Programmiersprache Java.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
Netzwerke - Protokolle
Der kritische Abschnitt
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Aufgaben Semaphore Übersicht (Dijkstra)
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Betriebssysteme Übung 2. Tutorium

Task 1 – Locks (1) Wozu Locks? Dienen dazu, exklusiven Zugriff auf eine Ressource sicherzustellen Lock = binäre Semaphore Wenn ein Thread einen besetzten Lock anfordert: Thread->Sleep() was passiert dabei im Sheduler?

Task 1 – Locks (2) Bestandteile: Variable mit Thread*, der den Lock hält Liste der Thread*, die den Lock angefordert haben Lock::Acquire(): anfordern des Lock (atomar!) Lock::Release(): freigeben des Lock (atomar!) Lock::isHeldByCurrentThread(): Servicemethode, die true liefert, wenn currentThread den Lock hält.

Task 1 – Locks (3) Mehrere Implementierungsvarianten Ableitung von Semaphore ohne Rekursion Mehrfacher Aufruf von Acquire() darf nicht zu Deadlock führen, mehrfacher Aufruf von Release() ohne Auswirkungen mit Rekursion Mehrfacher Aufruf von Acquire() möglich, tatsächliches Release() erst nach gleicher Anzahl

Task 1 – Conditions (1) Wozu Condition Variablen? Prozesssynchronisation verwenden dazu einen Lock

Task 1 – Conditions (2) Bestandteile: Liste der wartenden Thread* Condition::Wait(Lock*) gibt den Lock frei und legt den Thread schlafen, danach Re-Acquire() (atomar!) Condition::Signal(Lock*) ersten der wartenden Threads aufwecken (atomar!) Condition::Broadcast(Lock*) alle wartenden Threads aufwecken (atomar!)

Task 1 – Conditions (3) Ablauf 1 A & B machen Acquire() A erhält den Lock B wird demzufolge in die Queue des Lock gelegt

Task 1 – Conditions (4) Ablauf 2 A macht Wait() dabei wird A in die Waiting-Queue der CV gelegt vorher wird jedoch der Lock freigegeben, sodass B weiterlaufen kann

Task 1 – Conditions (5) Ablauf 3 B läuft weiter und macht irgendwann ein Signal() dadurch wird A aus der Waiting-Queue geholt da Signal() atomar ist kommt A aber noch nicht zur Ausführung ausserdem fordert A sofort nachher – noch in der Wait() - der Lock wieder an und wird wieder blockiert

Task 1 – Conditions (6) Ablauf 4 B läuft weiter und lösten den Lock und die Atomität dadurch kann A weiterlaufen

Task 1 – Conditions (7) Ablauf 5 A läuft weiter und verlässt die CV Schließlich muss A noch den Lock freigeben

Task 3 – Join Wozu Thread::Join()? Möglichkeit, einen Thread auf einen anderen (oder mehrere andere) warten zu lassen Synchronisation, z.B. wenn der Thread auf ein Ergebnis des anderen angewiesen ist, um weiterarbeiten zu können Join() auf einen bereits beendeten Thread sowie mehrfaches Join() (identisch!) darf keine Auswirkungen haben