Durchsetzung einer Reihenfolge


Oft hat man in der Datenverarbeitung den Wunsch, einen bestimmten Prozeß eine Datei zuerst bearbeiten zu lassen. Das kann z.B. der Fall sein, wenn ein Prozeß zuerst schreibend auf eine Datei zugreifen soll und ein anderer dann lesend. Zur Durchsetzung dieser Reihenfolge kann ein Semaphor mit dem Wert 0 initialisiert werden. Den schreibenden Prozeß programmiert man so, daß er zunächst schreibt und anschließend eine V-Operation auf den Semaphor ausführt. Den Leser läßt man zuerst eine P-Operation durchführen und danach lesen. Falls der Leser zuerst aktiv wird, muß er blockieren. Wenn dann der Schreiber kommt, kann er den Leser wieder entblockieren, nachdem er geschrieben hat.

Das folgende Applet veranschaulicht dieses Problem:
Das rosafarbene Quadrat stellt den Semaphor dar. Durch Anklicken des Feldes S0.INIT(0) wird der Semaphor initialisiert, und es erscheinen drei Zahlen. Die kleine Zahl links oberhalb des Semaphors kennzeichnet seine Nummer. Die große Zahl rechts innerhalb gibt seinen count-Wert an, und die kleine Zahl links unten sagt aus, wieviele Prozesse sich im Warteraum des Semaphors befinden. Nach der Initialisierung können die Programmschritte der beiden Prozesse, die grau unterlegt und im unteren Feld dargestellt sind, angeklickt werden. Die einzelnen Programmschritte können nur in der angegebenen Reihenfolge abgearbeitet werden, so muß der Schreiber immer erst die "schreibt" Funktion ausführen, bevor er die Funktion "S0.V(1)" ausführen kann. Der zuletzt bearbeitete Programmschritt der Prozesse wird durch einen kleinen Pfeil gekennzeichnet. Das Feld, das zuletzt angeklickt wurde, wird gelb hinterlegt.



FH-Köln hoch zurück weiter