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.
| Aspekt | Polling | Interrupt |
|---|---|---|
| Funktionsweise | Die CPU liest wiederholt ein Statusregister, um zu sehen, ob das Gerät bereit ist | Das Gerät löst ein Signal aus; die CPU unterbricht ihre Arbeit und führt einen Interrupt-Handler (ISR) aus |
| CPU-Auslastung beim Warten | Beschäftigt: Die CPU verbraucht Zyklen für das Prüfen | Frei: Die CPU kann andere Arbeit erledigen oder schlafen |
| Reaktionszeit | Hängt davon ab, wie oft die Schleife prüft; vorhersagbar | Schnell (Mikrosekunden), schwankt aber je nach Maskierung, Priorität und Kontextsicherung |
| Overhead | Konstant, auch wenn nichts passiert | Ein Aufwand pro Ereignis; eine sehr hohe Ereignisrate kann die CPU überlasten (Interrupt-Sturm) |
| Komplexität | Einfach zu schreiben und zu debuggen | Aufwendiger: Handler müssen kurz sein, und gemeinsame Daten mit dem Hauptcode erfordern Sorgfalt (volatile, atomarer Zugriff) |
| Leistungsaufnahme | Hält die CPU wach | Ermöglicht Energiesparschlaf, bis ein Ereignis die CPU weckt |
| Zeitverhalten | Leicht nachzuvollziehen | Nebenläufigkeitsfehler zwischen Handler und Hauptcode sind möglich |
| Typische Einsatzgebiete | Sehr schnelle oder kontinuierliche Ereignisse, einfache Programme, Hochgeschwindigkeits-Netzwerktreiber | Timer, Taster, Kommunikationsereignisse, Sensoralarme, Aufwecken aus dem Schlafzustand |
Die Zahlenangaben sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.