Interrupt vs. Polling: Unterschiede und wann man was einsetzt

Es gibt zwei Wege, wie ein Prozessor erfährt, dass ein Gerät Aufmerksamkeit braucht. Beim Polling prüft die CPU den Gerätestatus in einer Schleife immer wieder. Bei Interrupts signalisiert das Gerät der CPU, die ihre aktuelle Arbeit unterbricht, einen kleinen Handler ausführt und dann fortfährt. Polling ist einfach und vorhersagbar, verschwendet aber Zeit; Interrupts sind effizient und reaktionsschnell, bringen aber Overhead mit sich und machen das Programm schwerer nachvollziehbar.

AspektPollingInterrupt
FunktionsweiseDie CPU liest wiederholt ein Statusregister, um zu sehen, ob das Gerät bereit istDas Gerät löst ein Signal aus; die CPU unterbricht ihre Arbeit und führt einen Interrupt-Handler (ISR) aus
CPU-Auslastung beim WartenBeschäftigt: Die CPU verbraucht Zyklen für das PrüfenFrei: Die CPU kann andere Arbeit erledigen oder schlafen
ReaktionszeitHängt davon ab, wie oft die Schleife prüft; vorhersagbarSchnell (Mikrosekunden), schwankt aber je nach Maskierung, Priorität und Kontextsicherung
OverheadKonstant, auch wenn nichts passiertEin Aufwand pro Ereignis; eine sehr hohe Ereignisrate kann die CPU überlasten (Interrupt-Sturm)
KomplexitätEinfach zu schreiben und zu debuggenAufwendiger: Handler müssen kurz sein, und gemeinsame Daten mit dem Hauptcode erfordern Sorgfalt (volatile, atomarer Zugriff)
LeistungsaufnahmeHält die CPU wachErmöglicht Energiesparschlaf, bis ein Ereignis die CPU weckt
ZeitverhaltenLeicht nachzuvollziehenNebenläufigkeitsfehler zwischen Handler und Hauptcode sind möglich
Typische EinsatzgebieteSehr schnelle oder kontinuierliche Ereignisse, einfache Programme, Hochgeschwindigkeits-NetzwerktreiberTimer, Taster, Kommunikationsereignisse, Sensoralarme, Aufwecken aus dem Schlafzustand

Die Zahlenangaben sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.

Wann welches einsetzen

Polling
Wenn Ereignisse häufig sind oder die Schleife einfach ist und Sie ein vorhersagbares Timing ohne die Komplexität von Handlern wollen.
Interrupt
Wenn Ereignisse selten oder unvorhersehbar sind, Sie eine schnelle Reaktion und geringe Leistungsaufnahme wollen und die CPU andere Arbeit hat.
Hybrid
Manche Systeme kombinieren beides: Ein Interrupt meldet das erste Ereignis, und der Treiber pollt dann bei hohem Datenaufkommen, wie bei Hochgeschwindigkeits-Netzwerktreibern.

FAQ

Was ist besser, Interrupts oder Polling?

Keines von beiden immer. Interrupts liefern eine schnelle Reaktion und lassen die CPU schlafen, während Polling einfach und vorhersagbar ist. Nutzen Sie Interrupts für seltene Ereignisse und Polling für sehr häufige.

Was sollte ein Interrupt-Handler tun?

Kurz sein: das Minimum erledigen, ein Flag setzen oder die Arbeit in eine Warteschlange stellen und zurückkehren. Lange Arbeit oder blockierende Aufrufe im Handler beeinträchtigen die Reaktionsfähigkeit.

Was ist ein Interrupt-Sturm?

Wenn Ereignisse so schnell eintreffen, dass die CPU ihre gesamte Zeit mit dem Betreten und Verlassen von Handlern verbringt. Hochgeschwindigkeits-Netzwerktreiber wechseln in diesem Fall zum Polling.

Warum sparen Interrupts Energie?

Die CPU kann schlafen, bis ein Ereignis sie weckt, statt ständig aufzuwachen, um zu prüfen.

Wichtige Begriffe erklärt

Interrupt (Unterbrechung)
CPU-Mechanismus, der die laufende Aufgabe kurz anhält, um eine Anforderung, etwa von einem externen Gerät, zu bearbeiten, und danach zur ursprünglichen Aufgabe zurückkehrt.
Polling (zyklische Abfrage)
Ein Verfahren, bei dem die CPU den Status eines Peripheriegeräts wiederholt abfragt, um Änderungen zu erkennen. Einfach, verbraucht aber auch dann Zeit und Energie, wenn nichts passiert.
Interrupt-Handler (Unterbrechungsbehandlung)
Die Routine, die eine CPU bei einer Unterbrechung oder Ausnahme ausführt. Sie sichert den unterbrochenen Zustand, behandelt die Ursache und kehrt zurück. Handler sollten so kurz wie möglich sein.

Weitere Vergleiche