Puehlhofer Betriebsysteme1-1.pdf - von Petra Schuster
Puehlhofer Betriebsysteme1-1.pdf - von Petra Schuster
Puehlhofer Betriebsysteme1-1.pdf - von Petra Schuster
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
26 BETRIEBSSYSTEME<br />
:HFKVHOVHLWLJHU$XVVFKOX‰PLWDNWLYHP:DUWHQ<br />
Sperren mit Unterbrechungen<br />
Die einfachste Lösung ist es, wenn ein Prozeß vor dem Eintritt in seinen<br />
kritischen Abschnitt alle Unterbrechungen sperrt und erst wieder freigibt,<br />
wenn er den kritischen Abschnitt verläßt. Das Sperren aller Unterbrechungen<br />
ist innerhalb des Kerns eine nützliche Technik, eignet sich aber nicht für den<br />
wechselseitigen Ausschluß <strong>von</strong> Benutzerprozessen.<br />
Sperrvariablen<br />
Es wird eine logische Variable geführt, die mit 0 den Eintritt in den<br />
kritischen Bereich erlaubt und mit 1 sperrt. Der in den kritischen Bereich<br />
eintretende Prozeß muß dann vor seinem Eintritt prüfen, ob der Bereich frei<br />
ist, die Sperrvariable auf 1 setzen und nach Ende wieder freigeben.<br />
Dieser Ansatz ist ungeeignet, da der Zugriff auf die Sperrvariablen selbst<br />
wieder ein zeitkritischer Ablauf ist.<br />
Striktes Alternieren<br />
Striktes Alternieren läßt sich durch Einführung einer Variablen und aktivem<br />
Warten realisieren. Obwohl dieser Algorithmus zeitkritische Abläufe<br />
ausschließt, ist er nur für fixe Ablaufreihenfolgen geeignet.<br />
Petersons Lösung<br />
Bevor ein Prozeß eine gemeinsam benutzte Variable verwendet, ruft er die<br />
Prozedur enter_region auf, der er seine Prozeßnummer, 0 oder 1, als<br />
Parameter übergibt. Dieser Aufruf bewirkt, daß er wartet, falls es notwendig<br />
ist, bis er in seinen kritischen Bereich eintritt. Wenn er die Manipulation der<br />
gemeinsam benutzten Variablen beendet hat, ruft er die Prozedur<br />
leave_region auf und verläßt damit seinen kritischen Abschnitt.<br />
6HPDSKRUH<br />
Semaphoren wurde 1965 <strong>von</strong> E.W. Dijkstra vorgeschlagen<br />
Originalnotation als P- und V-Operationen, jedoch als DOWN und UP<br />
leichter lesbar.<br />
Semaphor-Operationen sind atomar.<br />
• DOWN<br />
o Überprüft, ob der Wert der Semaphore größer als Null ist.<br />
o Falls ja, wird der Wert um Eins erniedrigt und der Prozeß<br />
fortgesetzt.<br />
o Falls nein, wird der ausführende Prozeß blockiert (schlafen<br />
gelegt).<br />
• UP<br />
o Der Wert der Semaphore wird um Eins erhöht.