Interrupt und Polling

Hallo,

ich habe mal ein paar Fragen zu Interrupts und Polling.

Ich habe mir schon folgenden Artikel durch gelesen:

http://de.wikipedia.org/wiki/Interrupt

kann mir aber immer noch nichts „handfestes“ unter einem Interrupt vorstellen.

In dem Artikel steht, dass ein Interrupt zur Reaktion von Ausgabe/Eingabe Ereignisse gedacht ist. Merkt man als Anwender etwas davon?

Wenn ich jetzt etwas auf der Festplatte kopieren will und Windows fragt mich ob ich die Datei XYZ ersetzen müsste, dann wird der Vorgang ja angehalten und er kann ja in dem Moment nicht weiter arbeiten. Ist das ein Interrupt?

Wenn ein Interrupt geschieht, dann liegt ja ein Befehlsschema vor, was der Rechner in solch einem Moment tun soll. Woher kommen diese „Anleitungen“ bzw. wer definiert sie?


Beim Polling habe ich das so verstanden, dass das System „auf Verdacht“ nach schaut ob es Probleme gibt. Des wegen ist es dann ja so ineffizient, weil er ja oft nachschaut obwohl es keinen Grund dafür gibt. Kann man das so beschreiben?

Kurz gesagt

Beim Polling habe ich das so verstanden, dass das System „auf
Verdacht“ nach schaut ob es Probleme gibt. Des wegen ist es
dann ja so ineffizient, weil er ja oft nachschaut obwohl es
keinen Grund dafür gibt. Kann man das so beschreiben?

Ganz genau. Ein Interrupt ist so was wie eine (oder auch viele) Klingel zum µP, die von einem TATÄCHLICHEN Ereignis ausgelöst wird (Briefträger klingelt).

Polling (Abfragen) hingegen wäre, so als ob man alle 2 Minuten mal schnell an den Grundstückseingang rennen müsste um zu sehen, ob der Briefträger da ist. Auf ein POTENTIELLES Ereignis abprüfen.

Gruß

Stefan

Moin, Hyrokkin,

Windows fragt mich ob ich die Datei XYZ ersetzen müsste, dann
wird der Vorgang ja angehalten und er kann ja in dem Moment
nicht weiter arbeiten. Ist das ein Interrupt?

nein, das ist ein wartender Prozess, dieser Zustand wird auch „Idle“ genannt. Mit der Eingabe wird ein Interrupt ausgelöst, der das Zeichen von der Tastatur verarbeitet.

Ein Interrupt ist die Meldung an das Betriebssystem, dass irgendwer auf Bedienung wartet, dazu braucht es einen „Klingelknopf“ und einen „Draht“ (wer wo klingelt, ist im BIOS verzeichnet). Beispiel: Die Festplatte hat vor ein paar Millisekunden die Anweisung erhalten, einen Datenblock zu liefern. Wenn sie mit dem Lesen fertig ist, meldet sie das per Interrupt.

Wenn ein Interrupt geschieht, dann liegt ja ein Befehlsschema
vor, was der Rechner in solch einem Moment tun soll. Woher
kommen diese „Anleitungen“ bzw. wer definiert sie?

Das muss ein Programmierer mal geschrieben haben.

Beim Polling habe ich das so verstanden, dass das System „auf
Verdacht“ nach schaut ob es Probleme gibt. Des wegen ist es
dann ja so ineffizient, weil er ja oft nachschaut obwohl es
keinen Grund dafür gibt. Kann man das so beschreiben?

Exakt. Bis auf das Wort Problem - es muss kein Problem vorliegen, wenn ein Zeichen im Tastaturpuffer gefunden wird.

Gruß Ralf

Wenn ein Interrupt geschieht, dann liegt ja ein Befehlsschema
vor, was der Rechner in solch einem Moment tun soll. Woher
kommen diese „Anleitungen“ bzw. wer definiert sie?

Hallo,

ist im Prinzip recht einfach: der Programmierer, der z.B. für die serielle Schnittstelle zuständig ist, schreibt die nötige Software, um ein angekommenes Zeichen aus dem Empfänger auszulesen und an das System zu übergeben. Das nennt sich Interrupt Service Routine, die muss eine bestimmte Form haben und beim System angemeldet sein. Dann weiss das System, wenn der Empfangschip ein eingegangenes Zeichen meldet, was zu tun ist: mehr oder weiniger sofort wird das laufende Programm unterbrochen (interrupted) und die ISR ausgeführt. Ist diese fertig, wird das vorher laufende Programm an der unterbrochenen Stelle fortgesetzt.

Die ISRs gehören zur Treibersoftware und werden in einem privilegierten Modus ausgeführt. Normale Programme können keine Interrupts verwenden.

Gruss Reinhard