Professor Dr. F. Schweiggert
Abteilung Angewandte Informationsverarbeitung
Mario Jeckle und Ingo Melzer

Ausgabedatum: 23. Mai 2000
Abgabetermin: 6. Juni 2000

back to top   3. Übungsaufgabe Vertrauen ist gut...(10 Punkte)

 

was bisher geschah...

Schreiben Sie, aufbauend auf der Übung 2, ein C-Programm, welches nacheinander mehrere Prozesse erzeugt, die dasselbe Programme ausführen. Dieses Programm soll als separat ausführbare Datei abgelegt sein.
Das Programm inkrementiert den Zähler in der Datei um eine feste Anzahl Schritte (siehe letzte Übung).
Die Anzahl der zu erzeugenden Programminstanzen (kleiner 5) wird als Kommandozeilenparameter übergeben.

...und heiter weiter...

Nachdem wir bisher das Sperren und Entsperren dem Betriebssystem (aufgerufen durch die entsprechenden Systemcalls) überlassen haben, streben wir nun selbst nach Herrschaft (über unsere Datei).
Erstellen Sie ein Programm, welches als Lock-Manager die Schreibzugriffe auf die Datei kontrolliert und koordiniert. Jedes schreibwillige Programm muß vor dem eigentlichen Schreibvorgang die entprechende Berechtigung beim Lock-Manager beantragen und nach Abschluß der Schreiboperation wieder zurückgeben. Abhängig vom dort gespeicherten Zustand der Datei (exklusiv gesperrt oder freigegeben) wird die angeforderte Schreibberechtigung erteilt und die Datei gesperrt, oder die Berechtigung verweigert.
Wie bei der vertrauten Lock-Mimik üblich kann die Datei zu einem Zeitpunkt nur durch genau einen Prozeß exklusiv gesperrt werden.
Die Programme und der Lock-Manager kommunizieren über Signale miteinander.
Wie die einzelnen Schreibprozesse auch, wird der Lock-Manager durch den initialen Vaterprozess erzeugt.

...im Westen nichts Neues...

Kann ein Prozess die Datei dreimal nicht sperren, so soll er mit einem positiven Exit-Status terminieren.
Der Erzeuger soll auf die Beendigung aller von ihm erzeugten Kindprozesse warten und den zurückgelieferten Exit-Status ausgeben.

back to top   Hinweise

 

Es empfiehlt sich mit anwenderdefinierten Sinalen zu arbeiten, d.h. solchen die in sys/signal.h nicht vordefiniert sind. Je ein Signal für die Schreibanfrage (vom Prozeß in Richtung Lock-Manager), sowie die Gewährung bzw. Verweigerung des Schreibwunsches (Kommunikationsweg vom Lock-Manager in Richtung schreibwilliger Prozeß).




separator line
Service provided by Mario Jeckle
Generated: 2004-06-07T12:31:42+01:00
Feedback Feedback       SiteMap SiteMap
This page's original location This page's original location: http://www.jeckle.de/vorlesung/soft/uebung1.html
RDF metadata describing this page RDF description for this page