Hallo Ich blicke bei obiger Übungsaufgabe einfach nicht durch was da genau gemacht wird. Ich habe die Semaphore (binäre) so verstanden: Mit down(mutex) wird die Semaphore erhöht bzw. verringert, so dass alle anderen Prozesse, die ebenfalls down(mutex) aufrufen schlafen gelegt werden. Mit up(mutex) wird dann der nächste anstehende Prozess, der bei down(mutex) eingeschlafen ist, wieder aufgeweckt. Nun zu 1.) Es gibt ja hier keine Priorität oder sonstiges, welcher Prozess zeichnet jetzt zuerst? Zeichnen etwa alle gleichzeitig, dann komme ich auch auf die Koordinate (2,0), das würde ja aber dem down() up() Konzept wiedersprechen? Zu 2.) Damit das Haus korrekt gezeichnet wird muss doch folgende Abfolge ablaufen: A1,A2,A5,A6,A4,A1,A3,A2 In der Lösung wird ja jetzt schon in der Zeile 205 A1, A1, A5 gleichzeitig ausgeführt, da ja kein down(s1) bei P1 und P3 ausgeführt wird, oder? Da kommt man ja niemals auf das Haus? Was habe ich bei den Semaphoren derart missverstanden? Gruss Bert
Eine binaere Semaphore, eine Variable, ist gelockt(0) oder nicht gelockt(1). Wenn sie entlockt wird, bekommt der naechste Prozess, der auf die Semaphore wartet den Zugriff. Der Naechste bedeutet, der Naechste in der Warteschlange. Ob die nun priorisiert ist, oder nicht ist erst mal egal. Eine nicht binaere, N-wertige Semaphore kann N parallele Zugriffe zulassen. Dabei wird hinuntergezaehlt bis Null, dann ist sie fuer andere Prozesse gesperrt. Wait(semaphore) wartet auf ungleich Null und dekrementiert dann. Dann geht der code weiter. Signal(Semaphore) incrementiert und gibt die Semaphore wieder frei. Eine Mutex (=mutually exclusive) ist ein Codebereich, der nur von einem Prozess auf's Mal ausgefuehrt werden darf. Begin(Mutex) .. .. End(Mutex)
Ok, vielen Dank, habe das mit der Null Initialisierung der Semaphore falsch interpretiert, dachte die kann auch auf 1 erhöht werden und dann blockiert. Gruss Bert
Sorry. Die obig beschriebene Funktionalitaet des geschuetzten Codebereiches nennt sich "Critical Section"
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.

