Der springende Punkt bei Interrupts ist, dass sie jederzeit auftreten können (und dies auch tun) und so konzipiert sind, dass sie keinen Einfluss auf Code haben, der gerade ausgeführt wird, wenn sie auftreten. Alle Register werden gespeichert, und abhängig von der CPU-Architektur kann ein völlig anderer Registersatz ausgetauscht werden, der Interrupt erledigt seine Aufgabe, und dann werden die ursprünglichen Register wiederhergestellt und der Code läuft wie gewohnt weiter.
Probleme können auftreten, wenn die Interrupt-Serviceroutine selbst versucht, auf den Speicher zuzugreifen, auf den der laufende, unterbrochene Code zugreift. Noch subtilere Fehler können auftreten, wenn ein zeitkritischer E / A-Prozess unterbrochen wird. Diese Probleme treten häufig bei älteren, einfacheren und weniger sicheren Architekturen auf, bei denen möglicherweise nur eine geringe Trennung zwischen dem Moduscode "Benutzer" und "Supervisor / Kernel" besteht.
Diese Art von Problem kann schwer zu identifizieren und oft schwer zu reproduzieren sein, aber wenn sie einmal identifiziert sind, sind sie oft ziemlich trivial, um sie mit defensiver Programmierung, Mutexen / Semaphoren oder einfach durch Deaktivieren von Interrupts in kritischen Codeabschnitten zu beheben.
Die allgemeine Klasse von Problemen wurde ausführlich untersucht, und moderne Mehrkern-CPUs und sogar Multitasking-Betriebssysteme wären nicht möglich, wenn nicht bereits mehrere Lösungen erprobt und getestet worden wären.