Log in Page Discussion History Go to the site toolbox

CMS05-BSY1-23

From BluWiki

Was versteht man unter einer Unterbrechung und welche Arten von Unterbrechungen gibt es?

Sobald ein Ein-/Ausgabe-Gerät eine Aufgabe beendet hat, erzeugt es eine Unterbrechung (vorausgesetzt, dass Unterbrechungen vom Betriebssystem zugelassen werden). Dazu wird ein Signal vom Bus gesetzt, das extra dafür zugeteilt wurde. Dieses Signal wird vom Controller auf der Hauptplatine erkannt und dieser entscheidet dann, was getan werden muss. Wenn keine anderen Unterbrechungen ausstehen, kann der Controller die Unterbrechung sofort bearbeiten. Wenn eine andere Unterbrechung bearbeitet wird oder ein anderes Gerät gleichzeitig eine andere Unterbrechung auf einer Busleitung mit höherer Priorität ausgelöst hat, wird das Gerät zunächst ignoriert. In diesem Fall wird das Unterbrechungssignal auf dem Bus verbleiben, bis es durch einen Prozessor behandelt wird. Nachdem sich die CPU entschieden hat, die Unterbrechung zu behandeln, wird der Programmzähler und das Programmstatuswort auf dem aktuellen Stack gespeichert und die CPU schaltet in den Kernel Modus. Die Gerätenummer kann als Index genutzt werden, der auf eine Adresse im Speicher zeigt, an der sich die Unterbrechungsbehandlungsroutine für das Gerät befindet. Der Teil des Speichers, in dem sich die Liste mit allen Routinen befindet, wird interrupt vector (Unterbrechungsvektor) genannt. Sobald die Unterbrechungsroutine gestartet wurde, entfernt er den Programmzähler und das Programmstatuswort vom Stack, speichert sie zwischen und fragt dann das Gerät nach seinem Status ab. Sobald die Behandlungsroutine alles erledigt hat, kehrt sie zu dem zuletzt laufenden Programm zurück.

Arten der Unterbrechung:

[[- Interrupts]]

- Asynchrones Ereignis (es kann zu jedem beliebigen Zeitpunkt auftreten)

- Vorwiegend von Ein-/Ausgabe-Geräten und Zeitgebern (Timer) erzeugt

- Deaktivierbar

[[- Exceptions]]

- Synchrones Ereignis (ausgelöst durch die Ausführung einer bestimmten Anweisung)

- Reproduzierbar (gleicher Prozess mit den gleichen Daten in gleicher Umgebung erzeugt Exception an der gleichen Stelle)

- Beispiele: Division durch 0; Zugriffsverletzung im Speicher,…

[[- Traps]]

- Synchrones Ereignis

- Durch Software ausgelöst:

      - wenn eine andere Anwendung einen Dienst des Kernels anfordert
      - wenn der Debugger läuft

(ohne Gewähr)

Site Toolbox:

Personal tools
GNU Free Documentation License 1.2
This page was last modified on 28 October 2008, at 23:23.
Disclaimers - About BluWiki