Was macht eine CPU (bzw. ein Rechner) so, wenn sie nichts macht ... sie tut trotzdem etwas. Und das liegt vor allem daran, daß so ein Mikrocomputer (und andere auch) ein paar Dinge tun, die sie sozusagen immer machen. Ein Rechner ohne Grafikkarte bzw. aktive Textmodekarte stellt meistens auch im Leerlauf etwas auf dem Bildschirm dar, was er selber erzeugt - und sei es ein blinkender Cursor. Desweiteren steht der Rechner ständig parat Eingaben über die Tastatur anzunehmen. Es gibt evtl. eine Uhr, die weitergeschaltet werden muß und manchmal will auch eine angeschlossene Hardware Aufmerksamkeit einfordern.
Damit das funktioniert gibt es ungefähr zwei Varianten
- entweder es läuft permanent ein "Hauptprogramm", was sich genau um solche Sachen kümmert (etwa in der Art eines Softwareterminals)
- oder der Rechner macht tatsächlich nichts, wird dabei aber ständig gestört, weil eine Unterbrechung ihn zwingt, den meditativen Zustand zu verlassen und nach der Tastatur zu schauen, oder den Cursor umzufärben.
Die zweite ist die übliche Version für Mikrocomputer.
Das geht aber auch nur, wenn die CPU einen Anschluß hat, der, wenn er aktiviert wird, mitteilt, daß nun alles andere zu unterbinden ist - auch die totale Ruhe - und an einer bestimmten Stelle bitteschön erstmal ein bestimmtes Programm abzuarbeiten ist, die Interruptroutine. Wenn das fertig ist, kann dann auch - sollte zufällig doch gerade normale Rechnerei stattfinden, z.B. für ein Apfelmännchen - mit dem normalen Programm fortgefahren werden.
Je nach CPU gibt es evtl. nur einen, oder auch mehrere solche Anschlüsse, oder auch nur einen und dazu aber eine Art Adressleitung, die mitteilt, welches Gerät bzw. wer gerade um eine Unterbrechung bittet.
Eines haben diese Sachen aber alle gemein: Sie reagieren schnell auf mögliche Ereignisse und auch die Software, die diese Unterbrechungen dann auswertet und darauf reagiert, ist oft so gebaut, daß sie schnellstmöglich reagieren kann.
Solch eine Unterbrechung des normalen Ablaufs nennt man einen Interrupt.
Da auch Interrupts wieder unterschiedlich "wichtig" sein können, gibt es solche, die man kurzzeitig deaktivieren kann. Daneben existieren auch solche, die man nicht unterdrücken, kann, die also immer stattfinden können.
Da das Abschalten durch "Maskieren" eines Bits geschieht, spricht man, wenn eben dies nicht möglich ist, von einem Non Maskable Interrrupt, einem NMI.
Alle anderen Interrupts, die i.a. per Hardware eingeleitet werden, laufen unter "Interrupt", mit dem Kürzel IRQ.
Und dann kann man auch Interrupts per Software anfordern - das sind dann sogenannte Softwareinterrupts, SWI.
(Nebenbei: Da am C64 viele "Spielernaturen" und echte "Code-Zauberer" unterwegs waren, wurde dort eine Möglichkeit gefunden, den NMI zu unterdrücken - also etwas, was die Hardware eigentlich überhaupt nicht (nie) erlauben würde.)
Interessant wird solch ein System dann, wenn man eine schnellstmögliche Reaktion auf ein Ereignis benötigt, z.B. weil am seriellen Port Daten angekommen sind, die sofort ausgewertet werden müssen.
(noch schneller wäre nur möglich, wenn man alle IRQs abschaltet und quasi den Port permanent abfragt, ob gerade was ankommt)
Mit IRQs kann man mithin so eine Art Hardware-Multitasking hinbekommen, was aktiv wird, wenn ein "Teilnehmer" es aufruft.
Daneben lassen sich so auch ganze Softwarebibliotheken aufrufen, wenn der Prozessor das unterstützt und verschiedene Softwareinterrupts erlaubt, die dann an unterschiedliche Stellen im Speicher verzweigen. Die ARMs etwa haben so ein System.
Und es ermöglicht, wenn das Betriebssystem dies mit vorsieht, eine Ergänzung der Interruptroutinen vorzunehmen und damit zusätzliche Effekte einzubauen, die dann regelmäßig abgearbeitet werden, sobald der zugehörige Interrupt auftritt.