Was sind Trap, Fault, Abort ?


Problembeschreibung


Was ist ein Trap, Fault, Abort in Verbindung mit Ausnahmezuständen?

Lösung


Ausnahmezustände werden in Traps, Faults (Fehler) und Aborts (Abbrüche) unterteilt.

TRAP wird durch Programmbefehle ausgelöst, die der Prozessor als fehlerhaft betrachtet. Da er die entsprechenden Prüfungen nach dem Lesen des Befehls ausführt, zeigt das auf dem Stack gespeicherte Registerpaar CS:EIP hier grundsätzlich auf die Adresse des Befehls, der dem fehlerauslösenden Befehl unmittelbar folgt. Sämtliche Software-Interrupts werden als Trap ausgeführt. Da Interrupt-Deskriptoren ebenfalls Privilegstufen definieren, kommt hier ein Vergleich hinzu. Der Prozeß, der den INT-Befehl ausführt, muß dieselbe Privilegstufe wie der darüber angesprochene Deskriptor haben. Wenn beispielsweise ein Prozeß in Ring 3 den Befehl INT 47h ausführt, muß der Deskriptor IDT(47) in seinem DPL-Feld ebenfalls den Wert 3 haben. Ansonsten reagiert der Prozessor nicht mit der Ausführung der entsprechenden Routine, sondern mit einem weiteren Interrupt, der aber für eine allgemeine Schutzverletzung steht. Auf diese Weise läßt sich nicht nur festlegen, welchem Ring welche Interruptvektoren zur Verfügung stehen, sondern vor allem verhindern, daß Anwendungen für Hardware-Interrupts reservierte Vektoren benutzen.

FAULT wird durch Fehler innerhalb der Ausführung eines Befehls ausgelöst, beispielsweise durch den Zugriffsversuch auf einen Operanden in einem Speichersegment, das mit "not present" gekennzeichnet ist, d.h. sich momentan überhaupt nicht im Hauptspeicher befindet. Im Gegensatz zu Traps speichert der Prozessor hier nicht die Adresse des nachfolgenden Befehls, sondern die Befehlsadresse selbst. Eine aufgerufene Speicherverwaltung kann also für das Laden des entsprechenden Segments sorgen und danach den Befehl einfach wiederholen. Jede Art von Fault ist eine eigene Interrupt-Nummer zugeordnet, wodurch ein Betriebssystem zuverlässig zwischen Kalamitäten wie nicht vorhandenen Segmenten, Divisionen durch Null, Stack-Fehlern usw. unterscheiden kann.

ABORT steht für Situationen, in denen entweder aufgrund von Fehlern anderer Art oder aufgrund des gleichzeitigen Auftretens mehrerer Ausnahmezustände, eine sichere Wiederaufnahme des jeweiligen Prozesses unmöglich ist. Auf Interrupts dieser Art muß ein Betriebssystem mit dem Abbruch des laufenden Prozesses reagieren.