next up previous contents
Next: Zustandsveränderungen von Prozessen Up: Prozesssynchronisation Previous: Aufgabe   Contents


TSL-Instruktion

Für den nächsten Ansatz setzten wir voraus, dass die Maschinensprache einen Test and Set Lock-Befehl (TSL) enthält. Der TSL-Befehl kopiert den Inhalt einer bestimmten Adresse in ein Register und setzt den Inhalt der Adresse auf einen Wert ungleich 0. Diese Operation erfolgt ungeteilt. Es ist also keine Unterbrechung zwischen kopieren und Wert auf ungleich 0 setzen möglich.

Als Lösung geben wir nun ein Stück Pseudo-Assembler-Code an:
\begin{program}
enter_region:
tsl flag, register ; kopiere flag in register un...
...hen Bereich ok
\par leave_region
move  ...


Auch die Lösung mit dem TSL-Befehl hat den Nachteil, dass sie aktives Warten benutzt. Das heißt es wird zum einen Rechenzeit verschwendet. Zum anderen birgt das aktive Warten aber auch noch weitere Gefahren in sich. Wenn zum Beispiel der Scheduler einem Prozess sehr viel Rechenzeit zuteilt, der gerade aktiv wartet, kann das das Computersystem extrem bremsen und ggf. sogar blockieren, wenn aus irgendeinem Grund der Prozess, der sich in seinem kritischen Bereich befindet, diesen nicht mehr verlässt.



Prof. Dr. Pluemicke 2003-05-10