Eintrittsinvarianz
Mit dem Begriff Eintrittsinvarianz (bzw. als wiedereintrittsfähig, zu englisch reentrant) wird ein Programm-Attribut beschrieben, welches die mehrfache (quasi-gleichzeitige) Nutzung eines Programm-Codes erlaubt, so dass sich gleichzeitig (oder quasi-gleichzeitig) ausgeführte Instanzen nicht gegenseitig beeinflussen.
Dies trifft zu, wenn eine Routine bzw. Methode so implementiert ist, dass sie in Systemen mit Parallelvarbeitung von mehreren Prozessen oder Threads gleichzeitig betreten und abgearbeitet werden kann, ohne dass die Tatsache der gleichzeitigen Bearbeitung Auswirkungen auf den Programmzustand oder das Ergebnis hat. Bei Systemen ohne Parallelverbeitung ist eine Routine eintrittsinvariant, wenn sie einem Ablaufkontext (z. B. einem Prozess oder Thread) unterbrochen, dann von der Unterbrechungsroutine einem anderen Ablaufkontext erneut aufgerufen und später bei der Fortsetzung im ersten Kontext (nach der Unterbrechung) keine Beeinflussung durch die Unterbrechung und die Verarbeitung im anderen Kontext entsteht.[1] Dies schließt nicht nur den Rückgabewert ein, sondern den Programmzustand und alle durch die Methode beeinflussbaren Programmparameter.
Die Ausführung einer Instanz läuft also identisch ab, egal ob und wie viele andere Instanzen dieser Methode echt-parallel oder quasi-parallel abgearbeitet werden. Dies wird sichergestellt, indem kein Teil des Programmcodes durch die Methode selbst geändert wird und dass thread- bzw. prozesseigene Informationen wie beispielsweise Variablen pro Ablaufkontext in getrennten Speicherbereichen gehalten und keine anderen nicht-eintrittsinvarianten Routinen verwendet werden.[1]
Eine reentrante Methode verhält sich daher so, als wäre sie implizit in eine Transaktion gekapselt. Eintrittsinvariante Programmkonstrukte sind die Basis für viele preemptive Multitasking-Systeme (Threadsicherheit).
Weblinks
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ a b Systemprogrammierung: Grundlage von Betriebssystemen; Sachwortverzeichnis; dort zudem mit „Eintrittsinvarianz“ und „Ablaufinvarianz“ (auf Seite 1 und Folgende); veröffentlicht am 7. Juni 2016, am Lehrstuhl für Informatik 4 der FAU Erlangen-Nürnberg, von Wolfgang Schröder-Preikschat