Concurrent Programming (19530-V)

Dr. Richard S. Hall WS 01/02

- Übung 6 -

Assigned: 4.12.2001
Due: 11.12.2001

1. Exercise

a) Wie konstruiert man ein „mutual exclusion lock“ mit einer semaphore ?
b) In der Java Semaphore Klasse aus der Vorlesung: Warum ist es okay notify() anstatt von notifyAll() in up() aufzurufen ?
c) Was verursacht das „nested monitor problem“ ?
d) Was verursacht Deadlock ?
e) Wie verhindert das Anordnen der Reservierungen von Ressourcen-Typen (in einer immer gleichen Reihenfolge) Deadlock ?

2.  Exercise

Benutze den Java-Code für Counter und Semaphore aus Lecture 6 und implementiere einen StrictCounter (einen Zähler, der keine Inkrementierungen/Dekrementierungen ignoriert). Es sollen Semaphore anstatt “condition synchronization” verwendet werden.

3.  Exercise

Die Abbildung unten stellt ein Labyrinth dar. Erstelle eine Beschreibung dieses Labyrinths in FSP und benutze dann die Deadlock-Analyse des LTSA, um den kürzesten Pfad aus dem Labyrinth hinaus, ausgehend von irgendeiner Position, zu finden.

maze 

(Hinweis: An jeder Nummer im Labyrinth kann eine Richtungs-Aktion (north, south, east, west) benutzt werden, um einen möglichen Pfad zu einer anderen Nummer zu formulieren.)