Unterbrechung

In der Computerwissenschaft ist eine Unterbrechung ein asynchrones Signal, das das Bedürfnis nach der Aufmerksamkeit oder einem gleichzeitigen Ereignis in der Software anzeigt, die das Bedürfnis zur Abwechselung in der Ausführung anzeigt.

Eine Hardware-Unterbrechung veranlasst den Verarbeiter, seinen Staat der Ausführung zu sparen und Ausführung eines Unterbrechungsdressierers zu beginnen.

Softwareunterbrechungen werden gewöhnlich als Instruktionen im Befehlssatz durchgeführt, die einen Zusammenhang-Schalter einem einer Hardware-Unterbrechung ähnlichen Unterbrechungsdressierer verursachen.

Unterbrechungen sind eine allgemein verwendete Technik für den Computer stark mehrbeanspruchend, besonders in Realtime rechnend. Wie man sagt, wird solch ein System geUnterbrechungssteuert.

Eine Tat des Unterbrechens wird eine Unterbrechungsbitte (IRQ) genannt.

Der Teil eines Programms (gewöhnlich firmware, Fahrer oder Betriebssystemdienst), der sich mit der Unterbrechung befasst, wird eine Unterbrechungsdienstroutine (ISR) oder Unterbrechungsdressierer genannt.

Übersicht

Hardware-Unterbrechungen wurden als eine Weise eingeführt zu vermeiden, die wertvolle Zeit des Verarbeiters mit abstimmenden Schleifen zu vergeuden, auf Außenereignisse wartend. Sie können in der Hardware als ein verschiedenes System mit Kontrolllinien durchgeführt werden, oder sie können ins Speichersubsystem integriert werden.

Wenn durchgeführt, in der Hardware ein Unterbrechungskontrolleur-Stromkreis wie der PC von IBM kann Programmable Interrupt Controller (PIC) zwischen dem Unterbrechen-Gerät und der Unterbrechungsnadel des Verarbeiters verbunden werden, um mehrere Quellen der Unterbrechung auf die eine oder zwei normalerweise verfügbaren Zentraleinheitslinien gleichzeitig zu senden. Wenn durchgeführt, als ein Teil des Speicherkontrolleurs werden Unterbrechungen in den Speicheradressraum des Systems kartografisch dargestellt.

Unterbrechungen können kategorisiert werden in: Maskable-Unterbrechung, nichtmaskierbare Unterbrechung (NMI), Zwischenverarbeiter-Unterbrechung (IPI), Softwareunterbrechung und unechte Unterbrechung.

  • Unterbrechung von Maskable (IRQ) ist eine Hardware-Unterbrechung, die durch das Setzen ein bisschen in einer Bit-Maske eines Unterbrechungsmaske-Registers (IMR) ignoriert werden kann.
  • Nichtmaskierbare Unterbrechung (NMI) ist eine Hardware-Unterbrechung, die an einer verbundenen Bit-Maske Mangel hat, so dass sie nie ignoriert werden kann. NMIs werden häufig für Zeitmesser, besonders Aufpasser-Zeitmesser verwendet.
  • Zwischenverarbeiter-Unterbrechung (IPI) ist ein spezieller Fall der Unterbrechung, die durch einen Verarbeiter erzeugt wird, um einen anderen Verarbeiter in einem Mehrverarbeiter-System zu unterbrechen.
  • Softwareunterbrechung ist eine innerhalb eines Verarbeiters erzeugte Unterbrechung durch die Durchführung einer Instruktion. Softwareunterbrechungen werden häufig verwendet, um Systemanrufe durchzuführen, weil sie einen Unterprogramm-Anruf mit einer Zentraleinheitsringniveau-Änderung durchführen.
  • Unechte Unterbrechung ist eine Hardware-Unterbrechung, die unerwünscht ist. Sie werden normalerweise durch Systembedingungen wie elektrische Einmischung auf einer Unterbrechungslinie oder durch die falsch bestimmte Hardware erzeugt.

Verarbeiter haben normalerweise eine innere Unterbrechungsmaske, die Software erlaubt, alle Außenhardware-Unterbrechungen zu ignorieren, während sie gesetzt wird. Diese Maske kann schnelleren Zugang anbieten als das Zugreifen auf ein Unterbrechungsmaske-Register (IMR) in einem FOTO oder Deaktivieren-Unterbrechungen im Gerät selbst. In einigen Fällen, wie die x86 Architektur, unbrauchbar machend und Unterbrechungen auf dem Verarbeiter ermöglichend, selbst handeln als eine Speicherbarriere, jedoch kann es wirklich langsamer sein.

Eine Unterbrechung, die die Maschine in einem bestimmten Staat verlässt, wird eine genaue Unterbrechung genannt. Solch eine Unterbrechung hat vier Eigenschaften:

  • Program Counter (PC) wird in einem bekannten Platz gerettet.
  • Alle Instruktionen vor derjenigen, die auf durch den PC angespitzt ist, haben völlig durchgeführt.
  • Keine Instruktion außer derjenigen, die auf durch den PC angespitzt ist, ist durchgeführt worden (der kein Verbot auf der Instruktion darüber hinaus im PC ist, ist es gerade, dass irgendwelche Änderungen, die sie mit Registern oder Gedächtnis vornehmen, aufgemacht werden müssen, bevor die Unterbrechung geschieht).
  • Der Ausführungsstaat der Instruktion, die auf durch den PC angespitzt ist, ist bekannt.

Eine Unterbrechung, die diesen Anforderungen nicht entspricht, wird eine ungenaue Unterbrechung genannt.

Das Phänomen, wo die gesamte Systemleistung durch übermäßige Beträge der ausgegebenen Verarbeitungszeit streng gehindert wird, Unterbrechungen behandelnd, wird einen Unterbrechungssturm genannt.

Typen von Unterbrechungen

Niveau-ausgelöst

Eine Niveau-ausgelöste Unterbrechung ist eine Unterbrechung, für die eine unbediente Unterbrechung durch einen besonderen Staat, hohe oder niedrige Stufe von der Unterbrechungsbitte-Linie angezeigt wird. Ein Gerät, das möchte einer Unterbrechung Zeichen geben, steuert die Linie zu seinem aktiven Niveau, und hält es dann an diesem Niveau, bis bedient. Es hört auf, die Linie zu behaupten, wenn die Zentraleinheit ihm dazu befiehlt oder sonst die Bedingung behandelt, die es veranlasst hat, der Unterbrechung Zeichen zu geben.

Gewöhnlich die Verarbeiter-Proben der Unterbrechungseingang in vorherbestimmten Zeiten während jedes Buszyklus wie der Staat T2 für den Z80 Mikroprozessor. Wenn die Unterbrechung nicht aktiv ist, wenn die Verarbeiter-Proben sie, die Zentraleinheit es nicht sieht. Ein möglicher Gebrauch für diesen Typ der Unterbrechung soll unechte Signale von einer lauten Unterbrechungslinie minimieren: Ein unechter Puls wird häufig so kurz sein, dass er nicht bemerkt wird.

Vielfache Geräte können eine Niveau-ausgelöste Unterbrechungslinie teilen, wenn sie dazu entworfen werden. Die Unterbrechungslinie muss ein Ziehen unten haben oder Widerstand hochziehen, so dass wenn nicht aktiv gesteuert es sich zu seinem untätigen Staat niederlässt. Geräte behaupten aktiv die Linie, um eine hervorragende Unterbrechung anzuzeigen, aber die Linie schwimmen zu lassen (steuern Sie sie nicht aktiv) wenn nicht Nachrichtenübermittlung einer Unterbrechung. Die Linie ist dann in seinem behaupteten Staat, wenn irgendwelcher (ein oder mehr als ein) der sich teilenden Geräte einer hervorragenden Unterbrechung Zeichen gibt.

Diese Klasse von Unterbrechungen wird von einigen wegen eines günstigen Verhaltens bevorzugt, wenn die Linie geteilt wird. Nach dem Ermitteln der Behauptung der Unterbrechungslinie muss die Zentraleinheit die Geräte durchsuchen, die es teilen, bis ein Verlangen-Dienst entdeckt wird. Nach der Wartung dieses Geräts kann die Zentraleinheit den Unterbrechungslinienstatus wiederüberprüfen, um zu bestimmen, ob irgendwelche anderen Geräte auch Dienst brauchen. Wenn die Linie jetzt de-asserted ist, vermeidet die Zentraleinheit, die restlichen Geräte auf der Linie zu überprüfen. Da einige Geräte öfter unterbrechen als andere, und andere Gerät-Unterbrechungen besonders teuer sind, wird eine sorgfältige Einrichtung von Gerät-Kontrollen verwendet, um Leistungsfähigkeit zu vergrößern.

Es gibt auch ernste Probleme mit dem Teilen von Niveau-ausgelösten Unterbrechungen. So lange jedes Gerät auf der Linie eine hervorragende Bitte um den Dienst hat, bleibt die Linie behauptet, so ist es nicht möglich, eine Änderung im Status jedes anderen Geräts zu entdecken. Das Aufschieben der Wartung eines Geräts des niedrigen Vorrangs ist nicht eine Auswahl, weil das Entdeckung von Serviceanforderungen von Geräten des höheren Vorrangs verhindern würde. Wenn es ein Gerät auf der Linie gibt, die die Zentraleinheit nicht weiß, wie man bedient, dann blockiert jede Unterbrechung von diesem Gerät dauerhaft alle Unterbrechungen von den anderen Geräten.

Der ursprüngliche PCI Standard hat shareable Niveau-ausgelöste Unterbrechungen beauftragt. Das Grundprinzip dafür war der Leistungsfähigkeitsgewinn, der oben besprochen ist. (Neuere Versionen von PCI erlauben, und PCI-Schnellzug verlangt den Gebrauch von mit der Nachricht Zeichen gegebenen Unterbrechungen.)

Rand-ausgelöst

Eine Rand-ausgelöste Unterbrechung ist eine Unterbrechung, die durch einen Niveau-Übergang auf der Unterbrechungslinie, irgendein ein fallender Rand (hoch zum niedrigen) oder ein steigender Rand (niedrig zum hohen) Zeichen gegeben ist. Ein Gerät, das möchte einer Unterbrechung Zeichen geben, steuert einen Puls auf die Linie und veröffentlicht dann die Linie zu seinem untätigen Staat. Wenn der Puls zu kurz ist, um durch die befragte Eingabe/Ausgabe dann entdeckt zu werden, kann spezielle Hardware erforderlich sein, den Rand zu entdecken.

Vielfache Geräte können eine Rand-ausgelöste Unterbrechungslinie teilen, wenn sie dazu entworfen werden. Die Unterbrechungslinie muss ein Ziehen unten haben oder Widerstand hochziehen, so dass wenn nicht aktiv gesteuert es sich zu einem besonderem Staat niederlässt. Geräte geben einer Unterbrechung durch das kurze Fahren der Linie zu seinem Nichtstandartstaat Zeichen, und lassen die Linie schwimmen (steuern Sie es nicht aktiv) wenn nicht Nachrichtenübermittlung einer Unterbrechung. Dieser Typ der Verbindung wird auch offenen Sammler genannt. Die Linie trägt dann alle durch alle Geräte erzeugten Pulse. (Das ist der Ziehen-Schnur auf einigen Bussen und Straßenbahnen analog, die jeder Passagier ziehen kann, um dem Fahrer Zeichen zu geben, dass sie um einen Halt bitten.) Jedoch können sich Unterbrechungspulse von verschiedenen Geräten verschmelzen, wenn sie nahe rechtzeitig vorkommen. Um zu vermeiden, Unterbrechungen zu verlieren, muss die Zentraleinheit auf der Hinterkante des Pulses auslösen (z.B der steigende Rand, wenn die Linie hochgezogen und niedrig gesteuert wird). Nach dem Ermitteln einer Unterbrechung muss die Zentraleinheit alle Geräte für Dienstvoraussetzungen überprüfen.

Rand-ausgelöste Unterbrechungen ertragen die Probleme nicht, die Niveau-ausgelöste Unterbrechungen mit dem Teilen haben. Der Dienst eines Geräts des niedrigen Vorrangs kann willkürlich verschoben werden, und Unterbrechungen werden fortsetzen, von den vordringlichen Geräten erhalten zu werden, die bedient werden. Wenn es ein Gerät gibt, das die Zentraleinheit nicht weiß, wie man bedient, kann sie eine unechte Unterbrechung oder sogar periodische unechte Unterbrechungen verursachen, aber sie stört die Unterbrechungsnachrichtenübermittlung der anderen Geräte nicht. Jedoch ist es für die ausgelöste Unterbrechung eines Randes ziemlich leicht - zum Beispiel verpasst zu werden, wenn Unterbrechungen seit einer Periode maskiert werden müssen - und wenn es einen Typ der Hardware-Klinke nicht gibt, die das Ereignis registriert, das es unmöglich ist wieder zu erlangen. Solche Probleme haben viele "Läden" in der frühen Computerhardware verursacht, weil der Verarbeiter nicht gewusst hat, dass, wie man erwartete, es etwas getan hat. Modernere Hardware hat häufig ein oder mehr Unterbrechungsstatusregister, die die Unterbrechungsbitten zuklinken; gut schriftliche Rand-gesteuerte Unterbrechungssoftware überprüft häufig solche Register, um sicherzustellen, dass Ereignisse nicht verpasst werden.

Der ältliche Bus von Industry Standard Architecture (ISA) verwendet Rand-ausgelöste Unterbrechungen, aber beauftragt das Geräte nicht im Stande sein, sie zu teilen. Der parallele Hafen verwendet auch Rand-ausgelöste Unterbrechungen. Viele ältere Geräte nehmen an, dass sie exklusiven Nutzen ihrer Unterbrechungslinie haben, es elektrisch unsicher machend, sie zu teilen. Jedoch schließen ISA Hauptplatinen ein ziehen Widerstände auf den IRQ Linien hoch, so teilen wohl erzogene Geräte gerade feine ISA-Unterbrechungen.

Hybride

Einige Systeme verwenden eine Hybride der Niveau-ausgelösten und Rand-ausgelösten Nachrichtenübermittlung. Die Hardware sucht nicht nur nach einem Rand, aber sie prüft auch nach, dass das Unterbrechungssignal aktiv seit einer bestimmten Zeitspanne bleibt.

Eine übliche Anwendung einer hybriden Unterbrechung ist für den NMI (nichtmaskierbare Unterbrechung) Eingang. Weil NMIs allgemein größer - oder sogar katastrophal - Systemereignisse signalisieren, versucht eine gute Durchführung dieses Signals sicherzustellen, dass die Unterbrechung durch das Überprüfen gültig ist, dass es aktiv auf die Dauer von der Zeit bleibt. Diese 2-Schritte-Annäherung hilft, falsche Unterbrechungen davon zu beseitigen, das System zu betreffen.

Mit der Nachricht Zeichen gegeben

Eine mit der Nachricht Zeichen gegebene Unterbrechung verwendet keine physische Unterbrechungslinie. Statt dessen gibt ein Gerät seiner Bitte um den Dienst durch das Senden einer Kurznachricht über ein Kommunikationsmedium, normalerweise ein Computerbus Zeichen. Die Nachricht könnte eines Typs sein, der für Unterbrechungen vorbestellt ist, oder es könnte eines vorher existierenden Typs wie ein Gedächtnis sein schreiben.

Mit der Nachricht Zeichen gegebene Unterbrechungen benehmen sich sehr viel wie Rand-ausgelöste Unterbrechungen, in denen die Unterbrechung ein kurzes Signal aber nicht eine dauernde Bedingung ist. Unterbrechungsbehandlungssoftware behandelt die zwei auf die ziemlich gleiche Weise. Gewöhnlich vielfach während mit der Nachricht Zeichen gegebener Unterbrechungen mit derselben Nachricht (dieselbe virtuelle Unterbrechungslinie) werden erlaubt sich zu verschmelzen, wie sich nah Rand-ausgelöste Unterbrechungen unter Drogeneinfluss verschmelzen können.

Mit der Nachricht Zeichen gegebene Unterbrechungsvektoren können im Ausmaß geteilt werden, dass das zu Grunde liegende Nachrichtenmedium geteilt werden kann. Keine zusätzliche Anstrengung ist erforderlich.

Weil die Identität der Unterbrechung durch ein Muster von Datenbit angezeigt wird, einen getrennten physischen Leiter nicht verlangend, können viele verschiedenere Unterbrechungen effizient behandelt werden. Das reduziert das Bedürfnis nach dem Teilen. Unterbrechungsnachrichten können auch über einen Serienbus passiert werden, irgendwelche zusätzlichen Linien nicht verlangend.

PCI Schnellzug, ein Seriencomputerbus, verwendet mit der Nachricht Zeichen gegebene Unterbrechungen exklusiv.

Türklingel

In einer auf Computersysteme angewandten Drucktaste-Analogie wird der Begriff Türklingel oder Türklingel-Unterbrechung häufig gebraucht, um einen Mechanismus zu beschreiben, wodurch ein Softwaresystem Zeichen geben oder ein Computerhardware-Gerät bekannt geben kann, dass es etwas zu tuende Arbeit gibt. Gewöhnlich wird das Softwaresystem Daten in einige weithin bekannt und gegenseitig vereinbart Speicherposition (En) legen, und durch das Schreiben einer verschiedenen Speicherposition "klingeln". Diese verschiedene Speicherposition wird häufig das Türklingel-Gebiet genannt, und es kann sogar vielfache Türklingeln geben, die verschiedenen Zwecken in diesem Gebiet dienen. Es ist diese Tat des Schreibens zum Türklingel-Gebiet des Gedächtnisses, das "die Glocke anruft" und das Hardware-Gerät bekannt gibt, dass die Daten bereit und wartend sind. Das Hardware-Gerät würde jetzt wissen, dass die Daten gültig sind und gehandelt werden können. Es würde normalerweise die Daten einer Festplatte schreiben, oder es über ein Netz oder encrypt es, usw. senden

Die Begriff-Türklingel-Unterbrechung ist gewöhnlich eine falsche Bezeichnung. Es ist einer Unterbrechung ähnlich, weil es etwas Arbeit veranlasst, durch das Gerät getan zu werden, jedoch wird das Türklingel-Gebiet manchmal als ein befragtes Gebiet durchgeführt, manchmal schreibt das Türklingel-Gebiet durch Registern des realen Gerätes, und manchmal ist das Türklingel-Gebiet direkt zu Registern des realen Gerätes festverdrahtet. Wenn, entweder durch oder direkt zu Registern des realen Gerätes schreibend, das, aber nicht notwendigerweise, eine echte Unterbrechung veranlassen kann, an der Hauptverarbeiter-Einheit (CPU) des Geräts vorzukommen, wenn sie denjenigen hat.

Türklingel-Unterbrechungen können im Vergleich zur Nachricht Zeichen gegebene Unterbrechungen sein, weil sie einige Ähnlichkeiten haben.

Schwierigkeit mit dem Teilen von Unterbrechungslinien

Vielfache Geräte, die eine Unterbrechungslinie (jedes Auslösen-Stils) die ganze Tat als unechte Unterbrechungsquellen in Bezug auf einander teilen. Mit vielen Geräten auf einer Linie wächst das Arbeitspensum in der Wartung von Unterbrechungen im Verhältnis zum Quadrat der Zahl von Geräten. Es wird deshalb bevorzugt, um Geräte gleichmäßig über die verfügbaren Unterbrechungslinien auszubreiten. Die Knappheit an Unterbrechungslinien ist ein Problem in älteren Systemdesigns, wo die Unterbrechungslinien verschiedene physische Leiter sind. Mit der Nachricht Zeichen gegebene Unterbrechungen, wo die Unterbrechungslinie virtuell ist, werden in neuen Systemarchitekturen (wie PCI-Schnellzug) bevorzugt und erleichtern dieses Problem in einem beträchtlichen Ausmaß.

Einige Geräte mit einer schlecht bestimmten Programmierschnittstelle stellen keine Weise zur Verfügung zu bestimmen, ob sie um Dienst gebeten haben. Sie können abschließen oder sich sonst, wenn bedient, schlecht benehmen, wenn sie es nicht wollen. Solche Geräte können unechte Unterbrechungen nicht dulden, und können das Teilen einer Unterbrechungslinie also auch nicht dulden. ISA Karten, wegen häufig des preiswerten Designs und Aufbaus, sind für dieses Problem notorisch. Solche Geräte werden viel seltener, wie Hardware-Logik preiswerteres und neues Systemarchitektur-Mandat shareable Unterbrechungen wird.

Leistungsprobleme

Unterbrechungen stellen niedrig oberirdische und gute Latenz an der niedrigen angebotenen Last zur Verfügung, aber bauen sich bedeutsam an der hohen Unterbrechungsrate ab, wenn Sorge nicht genommen wird, um mehrere Pathologien zu verhindern. Das sind verschiedene Formen von livelocks, wenn das System alle seine Zeitverarbeitungsunterbrechungen zum Ausschluss anderer erforderlicher Aufgaben ausgibt. Unter äußersten Bedingungen kann eine Vielzahl von Unterbrechungen (wie sehr hoher Netzverkehr) das System völlig einstellen. Um solche Probleme zu vermeiden, muss ein Betriebssystem Netzunterbrechungsbehandlung so sorgfältig planen, wie es Prozess-Ausführung plant.

Typischer Gebrauch

Der typische Gebrauch von Unterbrechungen schließt den folgenden ein: Systemzeitmesser, Platteneingabe/Ausgabe, Macht - von Signalen und Fallen. Andere Unterbrechungen bestehen, um das Datenbyte-Verwenden UARTs oder Ethernet zu übertragen; Sinntastenanschläge; Kontrollmotoren; oder irgend etwas anderes die Ausrüstung muss tun.

Ein klassischer Systemzeitmesser erzeugt Unterbrechungen regelmäßig von einem Schalter oder der Starkstromleitung. Der Unterbrechungsdressierer zählt die Unterbrechungen auf, um Zeit zu behalten. Die Zeitmesser-Unterbrechung kann auch durch den Aufgabe-Planer des OS verwendet werden, um die Prioritäten wiederzuplanen, Prozesse zu führen. Schalter sind populär, aber einige ältere Computer haben die Starkstromleitungsfrequenz statt dessen verwendet, weil Macht-Gesellschaften in den meisten Westländern die Starkstromleitungsfrequenz mit einer sehr genauen Atomuhr kontrollieren.

Eine Plattenunterbrechung gibt der Vollziehung einer Datenübertragung von oder bis die peripherische Platte Zeichen. Ein Prozess, der wartet, um eine Datei zu lesen oder zu schreiben, springt wieder auf.

Eine Macht - von der Unterbrechung sagt voraus oder bittet um einen Verlust der Macht. Es erlaubt der Computerausrüstung, eine regelmäßige Stilllegung durchzuführen.

Unterbrechungen werden auch in Typeahead-Eigenschaften verwendet, um Ereignisse wie Anschläge zu puffern.

Siehe auch

  • Advanced Programmable Interrupt Controller (APIC)
  • BIOS Unterbrechung nennt
  • Ereignis-gesteuerte Programmierung
  • INTERNE NUMMER (x86 Instruktion)
  • Zwischenverarbeiter-Unterbrechung (IPI)
  • Unterbrechen Sie Dressierer
  • Unterbrechungslatenz
  • Nichtmaskierbare Unterbrechung (NMI)
  • Programmable Interrupt Controller (PIC)
  • Die Unterbrechungsliste von Ralf Brown

Außenverbindungen


Reihe (Mathematik) / Einschaltung
Impressum & Datenschutz