In der Informatik Versteht man unter Einem Interrupt ( engl. Zwei Interrupt , unterbrechen nach faul. Interruptus , diejenigen Partizip Perfekt Passiv von interrumpere , unterbricht) Eine vorübergehende Unterbrechung Eines laufenden Anwendungen, [1] um EINEN other, in der Regel Kurze, aber zeitkritischen , Vorgang abarbeiten.
Ihre ahnungslose Erreignis wird Unterbreakungsanforderung (engl. Interrupt Request , IRQ ) genannt. Nach of this Exigences Führt der Prozessor Eine Unterbrechungsroutine aus (auch Unterbrechungsbehandlunggenannt, engl. Interrupt – Handler , die Interrupt – Service – Routine oder kurz ISR ). Es wird das unterste Programm fortgeführt, wo es unterbroche warde.
Beispiels weise sendet die Tastatur eine Unterbrechungsanforderung, wenn eine Taste gedrückt wurde. Dazu wird ein Signal zum Bus oder direkt vom Flughafen kommen.Prozessorpin ( IRQ-Eingang ) befindet sich. [2] Die Unterbrechungsroutine Kann daraufhin das jeweilige Zeichen von der Tastatursteuerung Lesen und es eine Matrize jeweilige anwendung weiterleiten.
Interrupts wurden asymmetrisch externe Ereignisse ausgelöst. [3] Asynchron Bedeutende in diesem zusammenhang that die Laufer Anwendungen nicht immer an der Stelle unterbrochen Gleichen Wird.
Beispiele
Weitere Beispiele, bei denen Geräte eine Unterbrechungsanforderung erzeugen
- Netzwerkkarte : Wenn Daten empfangen wurden und im Puffer
- Festplatte : Wenn Die vorher ange ford Pea Daten Gelesen gerechnet wird und abholbereit Ist (das Lesen von der Festplatte Dauert relativ lang)
- Grafikkarte : wenn das aktuelle Bild fertig gezeichnet wurde
- Soundkarte : Wenn wieder Sound-Dates Zum Abhören benötigt wird, bevor der Puffer leer wird.
Geschichte
Computermodell hat keine Interrupts. [4] Runde 1958 Gab es erste Modelle mit Interrupts, ein Beispiel für Electrologica X1 . [5]
Zweck
Eine Interrupt-Gradienten dazu, Auch während einer anderen Anwendung (z. B. Eine anwendung) abgearbeitet Wird, Auf einer Ein- oder Ausgabe (ETWA von Eingangsfestplatte, Netzwerk oder Zeitgeber) sofort zu reagieren Kann. Die Interface-Hardware nur Durcheinander EINES Interrupt auslösen, Wenn Die nächste Bedienung Auf das Interface (Hardware) nicht Möglich ist, beispielsweise bei Puffern leer (Ausgabe), Puffer voll (Eingabe), bei Fehlermeldungen in der Interface-Hardware oder Ein Ereignis ohne Datum-Übertragung ( z. B. Timer).
Vorteile gegenüber dem Polling
NEBEN Interrupts ist also Lediglich stirbt Technik des programmierten (zyklische) Abfragen ( Polling ), um den Zustand von Ein- / Ausgabegeräten, Prozess oder Anderes zu erfahren. This Methode ist Zwar Einfacher und benötigt keine addition Hardware, ist allerdings sehr viel ineffizienter als sterben Arbeit Mit Interrupts, wenn sie sterben CPU sehr Hauf in anspruch Nimmt. Zudem Reaktionsgeschwindigkeit beim Polling Davon ab, Wie viel Zeit between die abfragen vergeht Hangt sterben, stirbt Kann bei der Situation, Die Eine Reaktion sofort verlangen, Kritisches sein. Bei Multitasking -Betriebssystemen ist das Polling als allein Methode nicht Möglich.
Die Standard Analogie für Alarme im Alltag is a Tür mit Klingel: während man seine Aufgaben erledigt, Kann man Jederzeit Durch Die Klingel unterbrochen Werden, Wenn Ein Gast eine „Abarbeitung“ wünscht, und sich IHM Dann zuwenden. Beim Polling – ohne auch Klingel – Musste immer wieder ein sterben Tür gelaufen Werden, um nachzuschauen, ob Besuch da ist oder nicht. Beim erhitzen von Milch hingegen ist es wohl besser, nicht erst auf den „Interrupt“ das Überkochen zu warten, Sondern den Prozess Regelmässig zu überwachen.
Anwendungsbeispiele
Als beispiel für Eine anwendung von Interrupts Kann man sich vorstellen EINEN Prozessor gibt Once Wacholder Hardwarekomponente EINEN Auftrag gegeben hat, nicht aktiv auf Derens Antwort wartet (Polling), Sondern so lange andere Aufgaben erledigt, Bis IHN- Jene Hardwarekomponente von sich aus Durch EINEN Interrupt wieder auf sich aufmerksam macht. Ohne Unterbrechen Waren beispielsweise präemptive (= verdrängen von laufenden Anwendungen) Multitasking Betriebssystem Unmöglich als Programm ohne sie nicht mehr unterbrochen, vom Betriebssystem umgeschaltet (Time-Sharing) und Ein- / Ausgabegeräte nicht mehr bedient Werden Könnten.
Funktionales Schweißen
Um ein Interrupt auslösen zu Können, sterben Muss eine die Hauptprozessor ( CPU ) angeschlossene Hardware interruptfähig sein, d. H., Bei Eintreffen Eines Bestimmt Ereignis Gesetz über die sogenannte Interrupt Leitung eines Ausgangssignals (elektrische Spannung An einen Ausgang Pin) erzeugen. Die CPU Besitzt im einfachsten Fall EINEN entsprechend Eingangs-Pin. Erscheint ein diesem Pin Eine elektrische Spannung, so begann Innerhalb der CPU Eine Sequenz von befehlen, sterben Unterbrechungsroutine einleiten sterben – die Interruptzyklus . Gibt es Mehrere Interruptquellen, Wird oft ein Interrupt Controller between sterben Signaleingänge und den Prozessor Geschaltet.
Latenz
Die Zeit between bauen sie technique die IRQ Signal sie und Beginn der entsprechenden VERARBEITUNG nennt man Latenz . Latenz vor Allem von der Hardware ab Für ein IRQ es Höchst vergebenen Priorität Hangt sterben – mit Schattenregistern Kann den Kontextwechsel in Einem Taktzyklus Gelieren -, für IRQs mit geringerer Priorität von der Ausführungsdauer wo bevorzugt Interrupt – Routine. Echtzeitbetriebssysteme Sind so Organisiert und konfigurierbar that DAMIT Echtzeitanforderungen leichter und beweisbar Erfüllt Werden Können.
Maskierung
Unterbrechungsanforderungen can zeitweise von der CPU Ignoriert Werden, zum beispiel , ideal gerade ein Anderer Interrupt Behandelt Wird. Dies Kann für Gewiss zeitkritische und synchronisierende Routine z. B. im Gerätetreiber verwendetes Signal. This Maskierung vergoldeter für alle Unterbrechen Matrize nicht maskierbaren bis auf ( NMI : Non Maskable Interrupt), für Spezielle Fälle Vorgesehen Ist (Stromausfall, Speicherfehler usw.) und für stirbt so genannte Software – Interrupts, stirbt Durch EINEN befehl in Einem Programm sterben ausgelöst Werden (z B. ‚int IRQNUMMER‘ bei x86 -. of this befehl beispielsweise von Linux genutzt Wurde, um von normalen Anwendungen über Systemaufrufe ( syscall ) im Kernel – Modus zu wechseln).
Ohne spezielle Maßnahmen können auch eigene Serviceroutinen (ISR) unterbunden werden, die zu erheblichen Softwareproblemen führen können. Dies bedeutet, dass die Interruptlogik in der CPU den Interrupt-Zyklus normalisiert oder vor dem Einsprung in den ISR unterbricht, der automatisch abbricht. Nach der Rückbildung in der untersten Programme (der Rückspeicherung des Statusregisters) wiederhergestellt.
Asynchronität
Externe Interrupts ( Hardwareinterrupts ) Sind Gegenüber sie unterbrochenen Anwendungen Grundsätzlich Asynchron, d. H., Die Ausführung des Anwendungen befindet sich ein Einer Stelle unbestimmten, Wenn Der Interrupt Auftritt. DAHER Dürfen Interrupts ohne besondere synchronisierende Massnahme einfluss auf Kein Programm Fliegen (oder Programmvariablen) oder auf Geräte (z. B. Festplatten) ausüben. ISRs sind keine Aufgaben im Sinne des Betriebssystems. Für ISR ist weiter Darauf hinzuweisen that nur mit besonderen Softwarekonzepten Innerhalb der ISR sterben Interruptmaskierung Aufgehoben (Interrupt aktivieren) Werden Darf, wenn Sowohl Eine Interruptschachtelung Durch fremde ISRs Als Auch Eine Wiedereintrittsmöglichkeit ( Wiedereinstieg ) des Gleichen Interrupts geschaffen Wird.
Einige Prozessor kennen Spezielle befehle, um so genannten Software- „Unterbricht“ Aus einer laufenden Aufgabe heraus auszulösen, sterben außer der besonderen Ein- Und wie Rücksprungbedingungen Unterprogrammaufrufe Wirken und DAHER auch nicht Asynchron Sind. Das Gleiche vergoldet für Traps , sterben von der CPU bei Fehlern (Geschützte Zugriffe, Verbotene Instruktion (z. B. der Division Durch Null), Single Step Debugging, Memory Management EREIGNISSE, aber Auch als Standard Schnittstelle zu Betriebssystem-aufrufen usw.) selbst ausgenutzt und zolderweise verwendet werden.
Unterbrechungsroutinen als Programmierung Prinzip
Insbesondere bei hardwarenahen ereignisgesteuerten Anwendungen, Wie sie in eingebetteten Systemen Übliches Sind, is a Möglich Vorgehensweise, mehr oder less sterben gesamt Funktionalität des Systems sterben Interruptprogramm BZW. in von diesen angestoßenen Aufgaben zu schüchtern. Der Prozessor Kann dabei typischerweise in einem Energy Ende Ruhezustand (Ruhezustand oder Leerlauf) Versetzt Werden, aus das ist bei Interruptanforderungen erwacht (auch extern Ereignisse bei). Das Hauptprogramm Besteht im Extremfall nur noch Aus einem Initialisierungsteil, Welcher nach DEM – System startet Durchlaufen Wird, gefolgt von Einem Endlosschleife, in der – abgesehen vom aktiviert Bitte des o G. Ruhezustands -. Nichts passiert.
Ablauf
Im Interruptzyklus wo CPU Wird die alte (unterbrochene) Befehlszähler Stand (bei Intel – Code – Segment und Instruction Pointer) und bei Einiger Architektur Auch das Statusregister Auf den Stapel Gespeichert. Nun muss bestimmt sein, dass die Unterbrechungsanforderung ausgetilgt hat. Bei den meisten CPUs Wird sterben Quelle Innerhalb des Interruptzyklus über EINEN Wert Auf dem Datenbus , wo üblicherweise vom Interrupt Controller Gesetzt Wird, identifiziert, Characterized wo Zugehörige InterruptvektorGefunden und zu der Passenden Unterbrechungsroutine (ISR) gelöst. Unser Auftrag des ISR war weder die Arbeit noch die Unterbrechungsanforderung (IRQ) wurde freigegeben, wird sie nicht verlängert werden. Bei Intel (= PC) Kompatibilitäten Architekten sind in den Ein- / Ausgangsbefehlen innerhalb der Unterbrechungsroutine enthalten. So bist du. Du kannst gerne lernen, wie du die Kurzer loswirst. Bei einigen CPU- Architekturen, spezielle Mikrocontroller, kann mehr unterbrochen sein, aber hier ist der Interrupt-Controller schon integriert. Bei einfach CPUs erfolgt nur die IRQ und den Interruptzyklus, Wobei pro Software überprüft Werden Muss, Welcher Quelle des Auslöser ist und dementsprechend Welche Routine abzuarbeiten ist.
Stehen bis zum zeitpunkt Dezember Interruptzyklus Mehrere IRQs von mehreren Quellen Art und Weise, so Wird Profilierung mittels Ein Auswahlverfahren Durch Die Hardware (Interrupt Controller), in den Vektor, bei dem WICHTIGSTEN Unterbrechungsanfrag Bestimmt und abgearbeitet. Im Anschluss folgt die Bearbeitung der anderen oder der anderen IRQs.
Prinzipieller Ablauf beim Aufsetzen einer Unterbre chungsanfrage (Übergang von Hardware auf Software):
- Solange Entruder der CPU oder der Interrupt des Interrupt-Controllers maskiert ist, paßt es weiter. Interruptanforderungen wurden kurz nach der Operation durchgeführt. Normalweise bleiben Interruptanforderungen erhalten, bis sie akzeptiert werden.
- Hardware (Interrupt-Logik von Interrupt-Controllern) erkannte den Interrupt-Vektor der IRQ-Funktion, die mein Netzwerk mit der höchsten Priorität ist.
- Die CPU Akzeptiert zu sterben Unterbrechungsanforderung und den Interruptzyklus Durch Führt, in D flachen Verlauf (je nach CPU) in dem Interruptvektor vom Datenbus Gelesen Wird. DANACH WIRD der Interrupteingang automatically maskiert und SOMIT gesperrt, DAMIT nicht Beliebers viele geschachtelte Interruptsequenzen auftreten und das Können Stapel überlaufen lassen.
- Im Interruptzyklus wo CPU Wird die alte (unterbrochene) Befehlszähler Stand (bei x86 – Code Segment cs und Instruction Pointer EIP ) und bei Einiger Architektur Auch das Statusregister Auf den Stapel Gespeichert. Es besteht keine Notwendigkeit, die Nachricht zu lesen. Jene Vektoren setzen selbst im letzten Herbst Jed und Nichte, die Einspringadressen lenkten, dar.
- Die Software in dem Interrupt Service Routine (ISR) gestartet und Durcheinander zunächst Inhalt große Register sterben, sterben sie selbst hotellet Wird (GGF Auch das Statusregister, Wenn Es nicht automatically gesichert Wurde) auf den Stapel Kopie Riss, wenn sonst sterben Daten der unterbrochenen Aufgaben nicht wiederhergestellt werden konnten. (Wenn hier Fehler zugelassen wurde, führt das zu zufällige Fehlerauswirkungen in fremden Programmen, die von schwerem gefolgt wurden!)
- Die Besitzerlizenz Interrupt-Service-Routine lehrt nun ab. Sie nach Aufgabe wurde z. B. Ein- und / oder Ausgabendaten puffert z. B. in einfachem Ringpuffer ; Beide verloren ihre Zeitbezüge, Nichte aber Reihenfolgen. Bei Bedarf kann. nach Einer Aufruf Spezielle Betriebssystemfunktion Durch Die ISR einer entsprechende Aufgabe Durch die Scheduler Dezember Betriebssystem Geste artig (geweckt) Wird. Da das eine Zeit dauert, darf möglicherweise. zwischenzeitlich der same Interrupt Erneut auftreten, war im algorithm wo ISR zu berücksichtigen ist, fällt sterben Interrupts nicht ohnehin maskiert bleiben.
- Die Software des ISR ist verantwortlich für die Registrierung der Datei.
- Die ISR wurde an den Rücksprung ( RTI ), die Rückspeichern des Alten Befehlszählers und GGF geschickt. Die alten Statusregister des Stacks haben die Feder der unterbrechung hut (so wie wäre nichts gewesen). Durch sterben Rückspeicherung Dezember Statusregisters (das auch das Maskenbit Enthält Interrupt) ist sterben Interruptlogik unmittelbar bereit, weitere IRQs zu Akzeptiert.
- Die Aufgerufene Aufgabe kennt die weitere Bearbeitung der Pufferten nicht.
Kategorisierung von Interrupts
Es wird zwischen verschiedenen Interrupts und unpräzisen Interrupts unterschieden. Präzise Interrupts stoppt die Maschine in einem wohldefinierten Zustand, unpräzise nicht. [6]
Ein Software- Interrupt ist ein Programmable, der als Hardware Interrupt, einer der bekanntesten Interrupt-Befehle, arbeitet. Ein Hardware- Interrupt wird von außerhalb über einen IRQ-Kanal oder -Pin an einen Prozessor eingeleitet. [1]
Auch nach ihrem Auslöser wurden unterbrochen: [7]
- Die Ein- / Ausgabegeräte können ein Signal senden, dass sie mit ihrer Aufgabe fertig werden.
- Dieses Programm kann als Referenz zum Dokument verwendet werden , das Ihnen vom Versuch und vom Maskencode zugesandt wird, Sie können sich auch auf die Anzahl der Kopien beziehen. Beide dieser Prozessoren sind verantwortlich für die Durchführung des Interrupts der Prozessorintern, aber reinhardwarääigen Signalwegen.
- Dort wird ihnen der Timer bezahlt. Betriebssystem, Aufgaben regelmässig zu erledigten. Dazu wurden unberührte Programme. Dieser Zeittimer kann im Prozessor als auch als Ex-Baustein betrachtet werden, in beiden Fällen wirkt sein Ablauf wie ein Ein / Ausgabeereignis.
Prozessor-Interrupts wurden als Ausnahmen betrachtet und konnten in drei Arten von eingeteillt werden: [8]
- Abbruchs sind sehr wichtige Fehler, z. B. Hardware
- Fehler hat unseren Abschluss einer Anweisung auf
- Fehler beim Beenden einer Anweisung auf (Einsatz beim Debuggen).
Hardware-Beispiel x86-Architektur
Alle Intel-Prozessor HABEN EINEN Interrupt – Signal Lein Gang für maskierbare Interrupts. Um Mehr Interruptquellen anschließen zu Können, Gibt es ein Interrupt Controller Eigene Bausteine (z. B. die Programmable Interrupt Controller , PIC), in dem Interrupt Eingang Mehrere Besitzen Ein Signal zusammenführt und zu. Außerdem ist ist über interne Register konfigurierbar, sodass ist je nach ausgelöstem Interrupt im CPU Interruptzyklus verschiedenen, vorgegebenen Interruptvektoren auf den Bus geheilt, CPU Dann einliest sterben sterben. Bei Neuer Prozessor Sind alle this Funktionalitäten mit in den Kern des Hauptprozessors integriert.
Bei x86 -Prozessoren kümmern sich 256 verschiedene Interrupt-Vektoren möglich. Der Interruptvektor wird im Interruptzyklus des Prozessors als 8-Bit-Wert vom Datenbus. Bei x86 Prozessoren kümmerten sich die Vektoren selbst um Nichte, die Origin Originals indirekt ablehnte. Der Vektor vielmehr im Real-Modus mit 4 multipliziert (Binara Verschieben) Wird, Vector DAMIT Für jeden 32-Bit Sprungadressen untergebracht Werden Können, zu Denen Dann Wird gesprungen. Im Protected-Modus wird mit 8 multiplierier, weil ein Deskriptor Input 8 Bytes lang ist. Im Real – Modus befindet sich sterben Interrupttabelle in ihnen Ersten Kilobyte Dezember Hauptspeichers (0000h: 0000h-0000h: 03FFh). Ja Interrupt-Nummer erforderlich 4 Bytes: 2 Bytes für Code-Codes und 2 für Offsetinnere Segmente der Segmente. Im Protected Mode of CPU Die Position der Tabellen durch den Interrupt-Deskriptor-Tabelle-Fixer. Hier wurde der Interrupt 8 Bytes für den Deskriptor -Eintrag der ISR verwendet.
Bei modernen Systemen (zum beispiel PCI Systemen) Infos finden sich in der Regel Mehrere Geräte EINEN Interrupteingang Teilen ( Interrupt-Sharing – genannt). Die Behandlungsroutine Für einen Sölch Interrupt Einander Dann alle Treiber, Derens Geräte Diesen Interrupt ausgelöst Haben Könnte, aufrufen (am IRQ Kann stirbt nicht festgestellt Werden). Kann es dabei zu Problem kommt, WENN einzelne Treiber zu lange aktiv Ist, und in der Zwischenzeit im Gerät, Welches die Interrupt ursprünglich ausgelöst hat, beispielsweise der Puffer Böschung Wird und überläuft. Im schlimmsten Fall führt das zu einem Datenverlust.
Bei Modernen Peripheriegeräten vergeben , wo Computer und das Betriebssystem selbst sterben IRQ – Nummern ( PnP = Plug-and-Play-Geräte); während bei alten Steckkarten, beispielsweise bei ISA – Karte, sterben IRQ Eingang von Hand eingestellt OP Werden Müssen oder fest auf die Karten Verdrahtet Ist.
Unter Linux kann das Interrupts mit folgendem Befehl abfragen:cat /proc/interrupts
Unter Windows (XP und Neuer) können Interrupts mit folgendem Befehl abbrechen: msinfo32.exe
→ Hardware-Ressourcen → IRQs
IRQ | verwendung |
---|---|
0 | System- Taktgeber |
1 | Tastatur |
2 | Kaskadiert zu IRQ 9 (für 8-15) |
3 | COM 2.4.6.8 (EIA-232 / RS-232 ) |
4 | KOM 1.3.5.7 |
5 | LPT 2 ( IEEE 1284 ) oder Soundkarte |
6 | Diskette |
7 | LPT 1 |
8 | Echtzeituhr (RTC) |
9 | I IRQ 2 UMGELITÄT (aber auch VGA und NIC , IRQ 16-23) |
10 | Frei ggf. PCI-Bus |
11 | Frei ggf. Adaptec SCSI |
12 | PS / 2 (Maus, andere Eingabegeräte) |
13 | Mathematischer Koprozessor (FPU) |
14 | Primäre IDE oder ATA |
15 | Sekundäre IDE oder ATA |
Siehe auch
- Kontextwechsel
Weblinks
- E / A-Grundlagen
- Ralf Browns Unterbrechungsliste
- Interruptsystem 8051-Prozessoren mit Beispielen
- Interrupts, IRQs und Ressourcenkonflikte auf heise.de
Einzelstunden
- ↑ Hochspringen nach:a b A. Metzlar: BIOS. Das Praxisbuch. Franzis, 2004, ISBN 978-3772367069 , S. 379.
- Hochspringen↑ A. Tanenbaum : Moderne Betriebssysteme. Pearson Studium, 2009, ISBN 978-3827373427 , S. 406.
- Hochspringen↑ W. Stallings: Betriebssysteme: Interna und Designprinzipien. Prentice Hall International, 2000, ISBN 978-0130319999 , S. 136.
- Hochspringen↑ W. Stallings: Betriebssysteme: Interna und Designprinzipien. Prentice Hall International, 2000, ISBN 978-0130319999 , S. 62.
- Hochspringen↑ EW Dijkstra : Meine Erinnerung an das Betriebssystem Design , EWD 1303, 2000, S. 15
- Hochspringen↑ A. Tanenbaum : Moderne Betriebssysteme. Pearson Studium, 2009, ISBN 978-3827373427 , S. 109.
- Hochspringen↑ W. Stallings: Betriebssysteme: Interna und Designprinzipien. Prentice Hall International, 2000, ISBN 978-0130319999 , S. 17.
- Hochspringen↑ A. Metzlar: BIOS. Das Praxisbuch. Franzis, 2004, ISBN 978-3772367069 , S. 85.