Java Einführungs-Seminar

Kritischer Abschnitt

Ein kritischer Abschnitt ist eine Sequenz von Befehlen, die nicht durch einen Prozesswechsel unterbrochen werden darf.

Im einfachsten Fall wird der eigentliche Auslöser eines Prozesswechsel, die Annahme einer Unterbrechung, verhindert. Dies geschieht entweder als Teil eines Assemblerbefehles oder als explizite Abschaltung der Unterbrechungsannahme. Größere Abschnitte in einer Hochsprache benöigen eine datentechnische Verwaltung.

Normalerweise werden Unterbrechungen am Ende jedes Assemblerbefehles akzeptiert. Bei Befehlen, die z.B. Segmentregister in einem 80386 Prozessor umladen, wird keine Unterbrechung angenommen, da normalerweise ein zweites Register mit einem Folgebefehl geladen werden muß. 

Mehrere Assemblerbefehle werden durch Abschalten des gesamten Unterbrechungssystems geschützt.

Abschnitte in einem Programm, das mit einer Hochsprache geschrieben wurde, verwenden eine Datenstruktur, die Semaphor genannt wird. Ein kritischer Abschnitt wird durch eine eigene Semaphor geschützt. Prozesse, die den Abschnitt betreten wollen, müssen sich dort registrieren. Entweder wird der Prozess durchgelassen, oder er wird geparkt. Beim Verlassen wird die Semaphor wieder freigegeben und der nächste wartende Prozess kann den Abschnitt betreten. 

Java unterstützt kritische Abschnitte durch Sperren (Semaphore). Sperren werden automatisch eingerichtet, wenn eine Methode oder eine Block mit dem Schlüsselwort "synchronized" definiert wird. 

Typische Anwendungen müssen dann noch mit wait() den laufenden Prozeß anhalten oder mit notifyAll() wartende Prozesse informieren.



Das Seminar wurde entwickelt von "Walter digital", München, Walter Herglotz, 1999. Alle Rechte sind vorbehalten. Die Verwendung des Seminarmaterials ist unzulässig, wenn nicht eine schriftliche Vereinbarung geschlossen wurde.
© Copyright "Walter digital", München, Walter Herglotz, 1999.