Digitale Schaltungstechnik/ Interrupt

Aus Wikibooks

Wie bereits erwähnt, geht die Digitaltechnik unter anderem in Richtung Microcontroller-Technik weiter.

Eines der typischen Themen ist, wie man mit sporadischen aber wichtigen Ereignissen umzugehen hat.

Die naheliegendste Möglichkeit ist, ständig nachzusehen, ob das Ereignis eingetreten ist ( Polling (Informatik)). Wie beim Menschen, ist das aber ineffizient: Da das Ereignis nur sporadisch ist, wird viel Zeit damit verschwendet, auf das Ereignis zu warten.

Eleganter ist es, einen besonderen Mechanismus einzuführen, der den Prozessor weckt bzw. dessen Aufmerksamkeit auf das Ereignis lenkt ( Interrupt).

Beispiel: Angeln[Bearbeiten]

Der Hauptvorteil der interrupt-basierten Herangehensweise ist, dass der Drache wortwörtlich schlafen kann und somit Energie sparen kann. Auch Microcontroller können sich schlafen legen und so wertvolle (Batterie-)Energie sparen.

Beim polling-basierter Lösung muss der Drache hingegen aktiv die Angel beobachten und kann so nichts anderes tun, geschweige den schlafen.

Weitere Beispiele[Bearbeiten]

  • Türklingel
    • Wenn anspannt liest oder auch konzentriert arbeitet, so ist der Raum in aller Regel ruhig. Die Klingel bzw. die Tür beachtet man nicht. Klingelt es dann aber an der Tür (Interrupt-Anforderung), unterbrechen wir unsere Arbeit und gehen zur Tür (Interrupt-Routine).
  • Ampel
    • Ist die Ampel rot, schaut man regelmäßig darauf, um zu prüfen, ob sie immer noch rot ist (Polling). Die Aufmerksamkeit liegt unter anderem (-> Multitasking) auf der Ampel, weil man anders schlicht nicht mitbekommt, dass sie grün ist.
  • Brandmelder

Interrupt unterdrücken[Bearbeiten]

Ein Telefon verwendet mit seinem Klingelton unsere Ohren als Interrupteingang. Im Normalfall ist das auch sinnvoll beziehungsweise für das Funktionieren essentiell. Es gibt aber Situationen, in denen so eine Unterbrechung fatal wäre z.B. beim Autofahren. Als Mensch schaltet man in so einer Situation das Mobiltelefon einfach aus. Alternativ ist auch der Einbau einer Freisprechanlage möglich, aber auch dann: In komplexen Verkehrssituationen hat der Verkehr Vorrang vor dem Gespräch. Ein Ereignis (Interrupt) im Straßenverkehr unterbricht das Gespräch. Ist das Ereignis bewältigt, lässt sich das Gespräch dann an der gleichen Stelle vorsetzen. Die Interrupts haben also unterschiedliche Prioritäten.

Auch bei Microcontroller-Systemen kann es zu solchen Situationen kommen: Während einer Kommunikation oder dem Schreiben von Daten kann eine Unterbrechung fatale Folgen haben. In so einem Fall deaktiviert der Microcontroller die Interrupts und arbeitet sie dann ab, wenn die kritische Operation vorbei ist.

Interrupt Prioritäten[Bearbeiten]

Wie beim Beispiel des Mobiltelefons angedeutet, gibt es Ereignisse die wichtiger sind als andere.

Wenn das Gebäude in dem man sich aufhällt brennt, so ist das klingelnde Telefon schlicht irrelevant. Das ganze kann aber auch differenzierter sein: Wenn wir gerade in einem Gespräch sind und das Telefon läutet, kann man das Gespräch kurz unterbrechen und dem Anrufer mitteilen, dass man ihn zurück ruft. Die Priorität steht damit zwar im ersten Gespräch (Hauptthread), der Telefonanruf steht aber in der Warteschlange.