Heim / Windows-Übersicht / Zwei Geräte in einem IRQ was zu tun ist. Hardware-Interrupts. Controller unterbrechen. Verfolgen von Lasten mit einem speziellen Dienstprogramm

Zwei Geräte in einem IRQ was zu tun ist. Hardware-Interrupts. Controller unterbrechen. Verfolgen von Lasten mit einem speziellen Dienstprogramm

Es kommt selten vor, dass ein Computer, insbesondere ein Heimcomputer, sein ganzes Leben lang lebt, ohne jemals ein Upgrade oder das Hinzufügen neuer Geräte zu durchlaufen. In den meisten Fällen ist eine solche Operation natürlich unter Beachtung der elementarsten Regeln schmerzlos, ohne besondere Probleme zu verursachen. Aber etwa jeder zehnte (oder sogar zwanzigste - es spielt keine Rolle) Computer wird in einen nicht funktionierenden Zustand versetzt: Er beginnt oft einzufrieren, verweigert die Ausführung von Funktionen oder fällt sogar einfach in den von uns allen so geliebten Zustand blauer Bildschirm des Todes. In der Regel liegt die wahrscheinlichste Ursache für solche Probleme in Hardwarekonflikten (neu und alt), die keine Hardwareressourcen gemeinsam genutzt haben. Nun, wenn Ihre Qualifikation es Ihnen erlaubt, die aufgetretenen Probleme zu lösen, oder gibt es jemanden in der Nähe, der Ihnen helfen kann, aber wenn es nichts dergleichen gibt? Allerdings sind es nicht die Götter, die Töpfe sind ja bekanntlich abgebrannt, lasst uns sitzen, nachdenken - schauen, und durchbrechen, denn alles ist nicht so schwierig, obwohl das Problem der Kompatibilität der unterschiedlichsten Geräte seit seiner Einführung in Mitte der 80er Jahre hat sich noch nicht viel verringert. Der vorgeschlagene Artikel wird dem Benutzer helfen, mit einer der Arten von Hardwareressourcen umzugehen, die für Geräte erforderlich sind, und meistens die Hauptursache aller Arten von Konflikten - mit Hardware-Interrupts (IRQ).

Hardwareressourcen des Systems

Für den Betrieb von Komponenten können drei Haupttypen unterschiedlicher Hardwareressourcen erforderlich sein. Fast jedes Gerät verwendet einen oder mehrere I/O-Ports. BEI dieser Fall Dies ist kein serieller oder paralleler Port, sondern nur eine spezielle Adresse, so etwas wie eine Adresse im RAM. Diese Ports funktionieren spezielle Mannschaften der zentrale Prozessor, mit dessen Hilfe beliebige Informationen entweder auf den Port geschrieben oder von ihm gelesen werden. Häufig erfolgt der Informationsaustausch zwischen dem Prozessor und dem Gerät nur über Ports, und einige Geräte nehmen ein Dutzend oder sogar mehr Portadressen an, von denen jede dazu dient, eine bestimmte Funktion auszuführen.

DMA-Kanäle (Direct Memory Access) werden viel seltener verwendet. Diese Art der Interaktion ist für Geräte gedacht, mit denen große Datenblöcke ausgetauscht werden RAM, zum Beispiel, Laufwerke oder Drucker. Die gesamte Vermittlung umgeht den zentralen Prozessor, der nur die Vermittlungsoperation einleitet und sofort mit der Durchführung anderer Arbeiten fortfährt. Dieser Ansatz kann die Leistung des gesamten Systems erheblich steigern.

Und die dritte Art von Ressourcen sind Hardware-Interrupts, die der grundlegende Mechanismus für die Reaktion des Systems auf externe Ereignisse sind. Hardware-Interrupts, allgemein als IRQs (Interrupt ReQuests) bezeichnet, sind physikalische Signale, die der Gerätecontroller verwendet, um den Prozessor zu informieren, eine Anforderung zu verarbeiten. Herkömmlicherweise kann das Interrupt-Behandlungsschema wie folgt aussehen:

  • der Prozessor empfängt das Unterbrechungssignal und seine Nummer;
  • unter Verwendung einer speziellen Tabelle wird die Adresse des Programms gefunden, das für die Behandlung des Interrupts mit der angegebenen Nummer verantwortlich ist - der Interrupt-Handler;
  • der Prozessor setzt die Ausführung der aktuellen Task aus, sichert Zwischenergebnisse und schaltet zur Ausführung des Interrupt-Handlers um;
  • der Prozessor greift auf das Gerät zu und prüft die Ursache des Interrupts;
  • die angeforderten Aktionen werden gestartet - Initialisierung, Gerätekonfiguration, Datenaustausch usw.;
  • wenn alle notwendigen Operationen abgeschlossen sind, kehrt der Prozessor zu der unterbrochenen Aufgabe zurück.

Im Gegensatz zu Software-Interrupts, die von einem ausführenden Anwendungsprogramm ausgelöst werden, können Hardware-Interrupts zu den unerwartetsten Zeiten auftreten, und darüber hinaus können mehrere Interrupts gleichzeitig auftreten. Damit das System nicht "zu viel darüber nachdenkt", welcher Interrupt überhaupt bedient werden soll, gibt es ein spezielles Prioritätsschema. Jedem Interrupt wird seine eigene eindeutige Priorität zugewiesen. Wenn mehrere Interrupts gleichzeitig eintreffen, bevorzugt das System die höchste Priorität und verschiebt die Bearbeitung anderer, weniger wichtiger Interrupts für eine Weile.

Verteilung unterbrechen

Überlegen Sie, wie Interrupts normalerweise in einem Standardcomputer verteilt werden. Einige der Nummern sind streng an bestimmte Geräte gebunden, andere können freigegeben und für Ihre Bedürfnisse verwendet werden. Beginnen wir der Reihe nach:

  • IRQ0- den Systemtimer unterbrechen. Wird 18,2 Mal pro Sekunde generiert. Wird in dieser Funktion seit der Erstellung des ersten IBM-PCs verwendet (diese Nummer steht nicht für andere Zwecke zur Verfügung);
  • IRQ1- Tastaturunterbrechung. Wird jedes Mal vom Tastatur-Controller generiert, wenn eine Taste gedrückt wird (die Nummer ist nicht für andere Zwecke verfügbar);
  • IRQ2 in Computern der XT-Klasse, die nur 8 Interrupt-Leitungen verwendeten, war für weitere Systemerweiterungen reserviert und wurde, beginnend mit Computern der AT-Klasse, zum Anschluss eines zweiten Controllers verwendet. Heute wird IRQ 2 vom System aus Gründen der Kompatibilität mit älterer Software verwendet, die Nummer steht für andere Zwecke nicht zur Verfügung;
  • IRQ3- Unterbrechung des asynchronen Ports COM 2. Derselbe Interrupt wird auch von Geräten verwendet, die über den Port COM 4 arbeiten. Wenn gewünscht, können sie deaktiviert werden, aber sonst kann sowieso niemand IRQ 3 zuweisen;
  • IRQ4 Analog zum vorherigen wird dieser Interrupt von Geräten verwendet, die die Ports COM 1 / COM 3 belegen.
  • IRQ5 ursprünglich für die Verwendung durch den zweiten parallelen Port LPT2 gedacht, aber dann, als der zweite parallele Port aufgegeben wurde, wurde IRQ 5 frei. Später wurde es von den meisten ISA-Soundkarten aktiv verwendet. Moderne PCI-Soundkarten verwenden diesen Interrupt ausschließlich aus Gründen der Kompatibilität mit älteren Spielen, von denen die überwiegende Mehrheit SB Pro unterstützt. IRQ 5 kann für andere Zwecke verwendet und an einen PCI-Steckplatz gebunden werden;
  • IRQ6, beginnend mit den ersten PCs, wird vom Floppy-Controller verwendet (die Nummer steht nicht für andere Zwecke zur Verfügung);
  • IRQ7- standardmäßig Unterbrechung der ersten parallelen Schnittstelle LPT 1. Wenn die Schnittstelle deaktiviert ist (wenn der Drucker nicht verfügbar oder für USB ausgelegt ist), kann sie verwendet werden verschiedene Geräte. IRQ 7 kann an einen PCI-Steckplatz gebunden werden;
  • IRQ8- Unterbrechung der Echtzeituhr, zuerst eingeführt in IBM AT. Eine andere Verwendung ist nicht möglich;
  • IRQ 9 und IRQ 10 sind kostenlos;
  • IRQ11 normalerweise für den USB-Bus reserviert, kann aber für andere Zwecke verwendet werden (dazu USB-Unterstützung im BIOS deaktivieren);
  • IRQ12 wird für eine PS/2-Maus verwendet, kann aber auch für andere Zwecke verwendet werden (wenn eine PS/2-Maus nicht verfügbar oder deaktiviert ist);
  • IRQ13 wurde ursprünglich vom arithmetischen Coprozessor verwendet und ist jetzt für die Kompatibilität mit älterer Software reserviert (die Nummer steht nicht für andere Zwecke zur Verfügung);
  • IRQ14 und IRQ15 angewendet von den primären bzw. sekundären IDE-Controllern.

Es gibt mehrere Möglichkeiten herauszufinden, wie die Unterbrechungsnummern in Ihrem speziellen Fall derzeit verteilt sind. Wenn Sie Ihren Computer starten, noch bevor Windows geladen wird, wird eine Konfigurationstexttabelle angezeigt. Unmittelbar danach befindet sich eine Liste von PCI-Geräten mit Angabe der ihnen zugewiesenen IRQ-Nummer.

Oder, wenn Sie noch Windows 9x verwenden, gibt es ein Systemsymbol in der Systemsteuerung, klicken Sie darauf – und wählen Sie die Registerkarte „Geräte“. In den Eigenschaften des Geräts „Computer“ finden Sie eine Liste aller Geräte mit ihren IRQs. In Windows 2000/XP haben wir keinen direkten Zugriff auf die Interrupt-Verwaltung, daher müssen wir zum Anzeigen der Liste der IRQs das Standard-Informationsdienstprogramm verwenden (Systemsteuerung/Verwaltung/Computerverwaltung/Systeminformationen/Hardwareressourcen). Und schließlich hat niemand die Verwendung von Dienstprogrammen eingestellt, die die Hardware- und Softwarefähigkeiten eines Computers testen.


Unter ihnen ist zweifelsohne SANDRA am beliebtesten, das dem Benutzer umfassende Informationen, einschließlich Unterbrechungen, liefern kann.

Gerätekonflikte

Ohne zu sehr ins Detail zu gehen, können wir sagen, dass ein Konflikt eine Situation ist, in der mehrere Objekte gleichzeitig versuchen, auf dieselbe Systemressource zuzugreifen. Ein Interrupt-Konflikt tritt auf, wenn mehrere Geräte dieselbe Interrupt-Leitung verwenden, um ein Anforderungssignal zu senden, und es keinen Mechanismus gibt, um diese Anforderungen zu ordnen, was entweder zu einem Ausfall führt oder eines der Geräte einfach nicht mehr funktioniert. Um eine klare Vorstellung davon zu haben, wie Konflikte vermieden oder beseitigt werden können, müssen Sie den Mechanismus der IRQ-Verwaltung verstehen.

Wie Sie wissen, persönliche Computer begann mit dem IBM PC XT. Seine Architektur sah nur acht Zeilen von Hardware-Interrupts vor, die von einem speziellen Controller gesteuert wurden. Jedem von ihnen wurde eine eigene eindeutige Nummer zugewiesen, die die Interrupt-Priorität und die Adresse seines Handlers (den sogenannten Interrupt-Vektor) festlegte. Die nächste Version der Architektur, IBM PC AT, ergänzte die bestehenden Leitungen um acht weitere, die von einem zweiten Controller gesteuert wurden, der mit einer der Interrupt-Leitungen des ersten Controllers verbunden war. Leider wurde diese Architektur an dieser Stelle in ihrer Entwicklung gestoppt, so dass alle modernen Computer trotz der deutlich gestiegenen Zahl der in ihnen verwendeten Zusatzgeräte immer noch nur sechzehn Interrupt-Leitungen haben, von denen eine für die Emulation eines zweiten Controllers reserviert ist.

Ursprünglich hatte der IBM PC AT-Computer nur einen Bus, über den Geräte mit dem Prozessor und dem Speicher kommunizieren konnten - ISA. Die meisten Interrupt-Leitungen wurden Standard-ISA-Geräten zugewiesen, und als der neue universelle PCI-Bus erschien, stellte sich heraus, dass auf seinem Anteil nur noch vier freie Interrupts übrig waren, die als INT A, INT B, INT C, INT D bezeichnet wurden, also nur vier PCI-Geräte können unabhängige Interrupts im System empfangen. Gleichzeitig muss aber bedacht werden, dass der IDE-Controller eine Sonderstellung einnimmt, der nicht zu diesen vier Geräten gehört, nur weil er zwar vom Datenübertragungsverfahren ein PCI-Gerät ist, aber seinen eigenen IRQ unterbricht 14 und IRQ sind ihm fest zugeordnet 15, wie bei älteren ISA-Geräten. Für den AGP-Bus, der eine Variante des PCI-Busses ist, wird INT A "geopfert", und der USB-Bus als einer davon Systemkomponenten, stellt über INT D eine Verbindung zu PCI her, wodurch die Anzahl der "ehrlichen" PCI-Geräte auf nur zwei reduziert wird. Wir sollten das Energieverwaltungs-Subsystem Power Management / System Management nicht vergessen, das auch eine eigene Unterbrechung erfordert. Wenn also mehrere PCI-Geräte Interrupts verwenden, ist es im wirklichen Leben unmöglich, sie mit eindeutigen Hardware-IRQs zu versehen, und in solchen Fällen wird ein Hardware-Software-Verfahren verwendet, das auf Plug & Play-Technologie basiert, was theoretisch Konflikte vermeidet. Obwohl im wirklichen Leben alles passieren kann und die verbleibenden ISA-Geräte immer noch keine Interrupt-Leitungen teilen können, sind sie daher die Hauptprovokateure von Konflikten. Damit reduziert sich das Problem der Konfliktlösung auf die korrekte Verteilung von Interrupt-Nummern bei Problemen mit ISA-Geräten oder "fehlerhaften" Treibern.

In dem System werden IRQ-Nummern zwischen physikalischen Leitungen zweimal zugewiesen. Das erste Mal, wenn das System-BIOS dies tut, ist, wenn das System hochfährt. Jedem Plug & Play-Gerät (und dazu gehören alle PCI-, modernen ISA- und alle auf dem Motherboard integrierten Geräte) wird eine Nummer aus den verfügbaren zugewiesen. Wenn es nicht genug Nummern gibt, bekommen mehrere Zeilen eine gemeinsame. Für PCI-Geräte ist dies kein Problem - wenn Sie normale Treiber und Unterstützung vom Betriebssystem haben, sollte alles gut funktionieren. Wenn aber mehrere ISA-Geräte oder eine nicht minder "explosive" Mischung aus PCI- und ISA-Geräten die gleiche Nummer erhalten, dann ist ein Konflikt einfach vorprogrammiert und man muss in den Prozess der automatischen Interrupt-Verteilung eingreifen. In diesem Fall müssen Sie alle unbenutzten ISA-Geräte deaktivieren (bei Systemen ohne ISA-Slots sind sie trotzdem vorhanden: Dies sind die Ports COM1, COM2 und das Laufwerk). Sie können auch die EPP- und ECP-Modi des LPT-Ports deaktivieren, während Sie den IRQ7-Interrupt freigeben. Alle Operationen zum Ändern von Interrupts im BIOS-Setup werden im Abschnitt "PCI / PNP Configuration" durchgeführt. Es gibt zwei Möglichkeiten, die IRQ-Nummernvergabe zu beeinflussen: eine bestimmte Nummer sperren und direkt eine Leitungsnummer zuweisen. Die erste Methode ist für alle BIOS verfügbar, die Menüpunkte "IRQ x used by:" werden angepasst (in neuen BIOS ist sie im Untermenü "IRQ Resources" versteckt). Diejenigen Interrupts, die ausschließlich ISA-Geräten zugewiesen werden sollen, sollten auf "Legacy ISA" eingestellt werden. Bei der Nummernverteilung für PCI-Geräte werden diese Interrupts also übersprungen. Sie sollten dies tun, wenn irgendein ISA-Gerät hartnäckig auf denselben Interrupt mit dem PCI-Gerät gerät, weshalb beide nicht funktionieren. In diesem Fall müssen Sie die Nummer dieses IRQ finden und blockieren. Das PCI-Gerät bewegt sich auf die neue IRQ-Nummer, während das ISA-Gerät gleich bleibt. Die zweite Möglichkeit, IRQ-Nummern zu verwalten, ist die direkte Zuweisung, obwohl sie etwas komplizierter als die erste ist, ist sie viel effizienter. Leider erlauben nicht alle modernen Motherboards diesen Vorgang. Im selben BIOS-Setup-Untermenü können Einträge wie „Slot X use IRQ“ (andere Namen: „PIRQx use IRQ“, „PCI Slot x priority“, „INT Pin x IRQ“) vorhanden sein. Mit dieser Option können Sie Interrupts individuell für jedes Gerät am PCI- und AGP-Bus einstellen. Dabei sind folgende Regeln zu beachten:

  • Jeder PCI-Steckplatz kann bis zu vier Interrupts aktivieren – INT A, INT B, INT C und INT D;
  • Der AGP-Slot kann zwei Interrupts aktivieren – INT A und INT B;
  • Es ist normal, dass jeder Steckplatz als INT A zugewiesen wird. Die verbleibenden Interrupts werden reserviert, wenn das PCI/AGP-Gerät mehr als einen Interrupt benötigt oder wenn der angeforderte Interrupt belegt ist;
  • AGP-Steckplatz und PCI-Steckplatz 1 weisen die gleichen Interrupts zu;
  • Die PCI-Steckplätze 4 und 5 verteilen auch die gleichen Interrupts;
  • USB verwendet PIRQ_4.

Unten ist eine Tabelle, die die Beziehung zwischen PIRQ (Programmable Interrupt Request) und INT (Interrupt) zeigt:

Signal AGP-Steckplatz
PCI-Steckplatz 1
PCI-Steckplatz 2 PCI-Steckplatz 3 PCI-Steckplatz 4
PCI-Steckplatz 5
PIRQ_0 INT A INT D INT C INT B
PIRQ_1 INT B INT A INT D INT C
PIRQ_2 INT C INT B INT A INT D
PIRQ_3 INT D INT C INT B INT A

Normalerweise sollten Sie die Option in der Position AUTO belassen. Sollte es jedoch notwendig werden, für ein Gerät am AGP- oder PCI-Bus einen individuellen IRQ zu setzen, muss zunächst festgestellt werden, in welchem ​​Steckplatz das Gerät eingebaut ist. Dann können Sie anhand der Tabelle den Haupt-PIRQ einstellen. Zum Beispiel, wenn Netzwerkkarte auf Steckplatz 3 eingestellt ist, dann ist der Haupt-PIRQ PIRQ_2, da alle Steckplätze möglichst INT A zugeordnet sind Danach wird der gewünschte IRQ ausgewählt und ihm der entsprechende PIRQ-Wert zugewiesen. Denken Sie daran, dass das BIOS versucht, INT A für jeden Steckplatz einen PIRQ zuzuweisen. Für AGP- und PCI 1-Steckplätze ist der Haupt-PIRQ also PIRQ_0, während für PCI-Steckplatz 2 der Haupt-PIRQ PIRQ_1 ist und so weiter. Zum zweiten Mal werden Unterbrechungsnummern zugewiesen Betriebssystem, obwohl Windows 9x nur in extremen Fällen beginnt, die vom BIOS ausgeführten Aktionen zu stören. In Windows 98 wird das IRQ-Verteilungssystem mit dem Standard-Gerätemanager verwaltet. In der Liste der Systemgeräte müssen Sie den PCI-Bus finden.


In seinen Eigenschaften gibt es eine spezielle Registerkarte. Wenn alles richtig eingerichtet ist, wird dort der Miniport genannt ("erfolgreich geladen") und das PCI-Busmanagement (Steering) aktiviert. Damit hat Windows "98 die Möglichkeit, die Verteilung von Interrupt-Nummern zwischen physikalischen Leitungen zu steuern. Da das BIOS hier aber meistens gute Arbeit leistet, ist dieser Mechanismus nicht beteiligt. Manchmal ist er aber einfach notwendig. Bei Verwendung veralteter ISA-Geräte die Plug-Technologie & Play nicht unterstützen, kann es sein, dass das BIOS dies nicht bemerkt und den von ihm belegten Interrupt an das PCI-Gerät weitergibt - wieder ein Konflikt. Um ihn zu lösen, müssen Sie den erforderlichen Interrupt im Windows-Geräte-Manager "98" reservieren.

Zusätzlich zur Redundanz können Sie die Interrupt-Nummer für das Gerät direkt einstellen. Dazu müssen Sie die Registerkarte "Ressourcen" in ihren Eigenschaften finden, die automatische Optimierung deaktivieren und versuchen, die zugewiesene Interrupt-Nummer zu ändern. Seien Sie vorsichtig, eine solche Operation funktioniert nicht immer und kann manchmal zu völlig unvorhersehbaren Ergebnissen führen.

Aber über Windows 2000 (sowie XP) - ein separates Gespräch. Wenn Sie einen ziemlich modernen Computer haben, unterstützt dieser wahrscheinlich die ACPI-Konfigurationsschnittstelle. Windows 2000 ignoriert in diesem Fall im Allgemeinen die Aktionen des BIOS und „hängt“ alle PCI-Geräte an einem logischen Interrupt. Im Allgemeinen wird dies gut funktionieren (wenn keine ISA-Geräte vorhanden sind), aber manchmal können Probleme auftreten. Um Interrupt-Nummern ändern zu können, müssen Sie entweder den HAL-Kernel ändern oder Windows 2000 mit im BIOS deaktiviertem ACPI neu installieren. Der Kernel wird wie folgt ersetzt: Wählen Sie im Geräte-Manager "Computer / Computer mit ACPI", danach müssen Sie den Treiber auf " Standard-Computer" und starten Sie neu. Wenn dies nicht hilft, müssen Sie Windows 2000 erneut installieren.

Abschließende Tipps

Nachdem Sie ein neues Betriebssystem mit allen Gerätetreibern installiert und sich vergewissert haben, dass es problemlos funktioniert, lohnt es sich, alles aufzuschreiben Computereinstellungen, insbesondere wenn Änderungen an den Standardeinstellungen vorgenommen wurden. Es ist am zuverlässigsten, solche Informationen auf einem normalen Blatt Papier zu notieren. Solche Informationen können sehr nützlich sein, wenn Sie Änderungen am konfigurierten System vornehmen, und helfen, Probleme zu lösen, die auftreten können, wenn alle Einstellungen bei der Installation neuer Geräte "verschieben" werden (dies passiert manchmal auch). Und vor allem denken Sie daran: Die meisten Probleme, die auftreten, sind auf die geringen Computerkenntnisse des Computerbesitzers zurückzuführen. Daher sollte man sich immer um Selbstbildung bemühen, dann gibt es weniger Probleme, und die trotzdem auftretenden werden nicht unlösbar erscheinen.

Ein Konflikt ist eine Situation, in der mehrere Objekte gleichzeitig versuchen, auf eine Ressource zuzugreifen, die nur für eines von ihnen bestimmt ist. Ein Interrupt-Konflikt tritt auf, wenn mehrere Geräte dieselbe Interrupt-Leitung verwenden, um ein Anforderungssignal zu senden, und es keinen Mechanismus gibt, um konkurrierende Anforderungen zu verarbeiten. Wenn der Treiber beim Empfang der Steuerung mit einem anderen Gerät arbeitet, das die Anforderung gesendet hat, tritt entweder ein Fehler auf oder eines der Geräte funktioniert einfach nicht.

Es stellt sich die Frage: Können mehrere Geräte die gleiche Interruptleitung nutzen, oder ist das prinzipiell unmöglich? Denn wenn der Fahrer feststellen kann, von wem die Anfrage genau stammt, antwortet er nur auf Signale „seines“ Geräts und ignoriert alle anderen. Aber das muss vorher irgendwie vereinbart werden, sonst sind Konflikte unvermeidlich.

Der lokale PCI-Bus wurde im Hinblick auf Interrupt-Sharing entwickelt. Jedes PCI-Gerät muss auf derselben Interrupt-Leitung wie andere PCI-Geräte korrekt funktionieren. Dies geschieht wie folgt: Das Vorhandensein eines Signals auf der Unterbrechungsleitung wird nicht durch die Front bestimmt, d.h. Änderung des Spannungspegels, sondern durch das Vorhandensein einer bestimmten Spannung. Mehrere Geräte können die Spannung in der Leitung gleichzeitig ändern und sozusagen in einer Warteschlange für den Service stehen.

Daher ist die gemeinsame Nutzung des gleichen IRQ durch mehrere PCI-Geräte per Definition kein Konflikt (Abbildung). Allerdings treten manchmal Probleme auf. Erstens arbeiten nicht alle PCI-Geräte korrekt auf derselben Interrupt-Leitung wie andere. Zweitens haben Treiber manchmal Fehler, die sie daran hindern, die Signalquelle korrekt zu identifizieren und andere Treiber zu stören. Drittens arbeiten nicht alle Geräte am PCI-Bus; Beispielsweise können ISA-Geräte, zu denen beispielsweise COM/LPT-Port-Controller gehören, Interrupts nicht mit anderen teilen.

Reis. Win2000 Device Manager IRQ Map - IO PIC Intel 440BX Chipsatz

Reis. Win2000 IRQ MAP - IO APIC - Über KT266a-Chipsatz

Infolgedessen sind Situationen möglich, in denen der Computer häufig einfriert, keine Funktionen mehr ausführt oder sogar einfach in den sogenannten „Blue Screen of Death“ fällt.

Apic (Advanced Programmable Interrupt Controller)

Wie oben gezeigt, ist die Unterbrechungsleitung eine sehr knappe Ressource für einen Computer. Mit der Entwicklung der Computerindustrie nimmt jedoch die Anzahl verschiedener externer Geräte im Computer ständig zu. Zum Beispiel auf einem Hauptplatine Es kann 5-6 PCI-Steckplätze, einen AGP-Steckplatz, einen integrierten IDE-Controller, einen integrierten SCSI-Controller, einen integrierten 1/2-Port-Netzwerkadapter usw. geben. Und all diese Geräte benötigen Interrupts. 16 IRQ-Leitungen wurden allmählich unzureichend.

APIC ist ein Interrupt-Controller, mit dem Sie 24 Hardware-Interrupts statt 16 verwenden können. Die seit 1982 unveränderte Grenze von 16 Hardware-Interrupts behinderte die Installation in einem Personal Computer zusätzliche Geräte. Ende 2001 erschienen die ersten Motherboards mit APIC.

Reis. Unterbrechen Sie das System in einer Multiprozessorumgebung.

Die vorhergehende Beschreibung bezog sich auf PICs, die für Einzelprozessorsysteme ausgelegt sind. Wenn das System zwei oder mehr Prozessoren enthält, ist dieser Ansatz nicht mehr durchführbar und es sind komplexere PICs erforderlich.

Alle modernen x86-Prozessoren enthalten einen lokalen APIC (local APIC). Jeder lokale APIC hat 32-Bit-Register, eine interne Uhr, einen lokalen Timer und zwei zusätzliche IRQ-Leitungen, LINT0 und LINT1, die für lokale APIC-Interrupts reserviert sind. Alle lokalen APICs sind mit einem externen E/A-APIC verbunden.

Der E/A-APIC enthält einen Satz von 24 IRQ-Leitungen, eine 24-Wege-Interrupt-Umleitungstabelle, programmierbare Register und einen Nachrichtenblock zum Senden und Empfangen von Nachrichten auf dem APIC-Bus. Im Gegensatz zu den IRQ-Pins des 8259A ist die Interrupt-Priorität nicht an eine Pin-Nummer gebunden.

Jeder Eintrag in der Interrupt-Umleitungstabelle kann individuell programmiert werden, um den Interrupt-Vektor und seine Priorität anzuzeigen, welcher Prozessor den Interrupt behandelt und wie dieser Prozessor ausgewählt wird. Die Informationen in der Interrupt-Umleitungstabelle werden verwendet, um jedes externe Signal in eine Nachricht zu übersetzen, die über den APIC-Bus an einen oder mehrere lokale APICs adressiert ist.

Statische Verteilung

Das IRQ-Signal wird von dem lokalen APIC geliefert, der in dem entsprechenden Interrupt-Umleitungstabelleneintrag aufgeführt ist. Ein Interrupt wird an eine bestimmte CPU, mehrere CPUs oder alle CPUs geliefert.

Dynamische Zuordnung

Das IRQ-Signal wird an den lokalen APIC des Prozessors geliefert, der den Prozess mit der niedrigsten Priorität ausführt.

Jeder lokale APIC hat ein programmierbares Jobprioritätsregister, das verwendet wird, um die Priorität des aktuellen Prozesses zu berechnen. Intel erwartet, dass dieses Register bei jedem Prozesswechsel vom Betriebssystemkern aktualisiert wird.

Zusätzlich zum Verteilen von Interrupts über Multi-APIC-Prozessoren erlaubt das System der CPU, Interprozessor-Interrupts zu erzeugen. Wenn eine CPU eine Unterbrechung an eine andere CPU senden möchte, speichert sie den Unterbrechungsvektor und die Ziel-Lokal-APIC-ID im Unterbrechungsbefehlsregister (ICR) ihrer lokalen APIC. Die Nachricht wird dann über den APIC-Bus an den lokalen Ziel-APIC gesendet, der die entsprechende Unterbrechung an seine CPU ausgibt.

Derzeit enthalten viele Einprozessorsysteme einen E/A-APIC-Chip, der auf zwei Arten konfiguriert werden kann:

1. Als Standard-8259A-PIC, der mit der CPU verbunden ist. Der lokale APIC ist deaktiviert und die beiden Leitungen LINT0 und LINT1 sind als INTR- und NMI-Pins konfiguriert.

2. Als standardmäßiger externer E/A-APIC. Der lokale APIC ist aktiviert und alle externen Interrupts werden über den E/A-APIC empfangen.

  • Alieva Elena Wiktorowna, Schüler
  • Ufa State Aviation Technical University
  • UNTERBRECHUNGSSTEUERUNG
  • REGLER
  • HARDWARE-UNTERBRECHUNG
  • UNTERBRECHEN

Unterbrechung bedeutet die vorübergehende Unterbrechung des Hauptverarbeitungsprozesses, um einige geplante oder ungeplante Aktionen auszuführen, die durch den Betrieb der Hardware oder des Programms verursacht werden. Der Interrupt-Mechanismus wird auf Hardwareebene unterstützt. Hardware-Interrupts treten als Reaktion des Mikroprozessors auf physikalisches Signal von einem Gerät (Tastatur, Systemuhr, Tastatur, Festplatte etc.), sind diese Interrupts zeitlich asynchron, d.h. treten zu zufälligen Zeiten auf. Der Interrupt-Controller ist dafür ausgelegt, ankommende Dienstanforderungen von Peripheriegeräten an den zentralen Prozessor zu verarbeiten und zu arbitrieren. Interrupts haben eine definierte Priorität, die es dem Interrupt-Controller ermöglicht, einem Gerät zu einem bestimmten Zeitpunkt Vorrang vor einem anderen zu geben. In einem modernen Computer gibt es bis zu 16 externe und periphere Geräte, die Interrupts erzeugen.

  • Automatisierung des Arbeitsablaufs eines Lagers eines Produktionsunternehmens
  • Calls-Technologien, Funktionen, Anwendung und Effizienz
  • Entwicklung eines Modells des Informationssystems der Rechtsabteilung für die Unterstützung und den Abschluss von Unternehmensverträgen

Einführung

Unterbrechung bedeutet die vorübergehende Unterbrechung des Hauptverarbeitungsprozesses, um einige geplante oder ungeplante Aktionen auszuführen, die durch den Betrieb der Hardware oder des Programms verursacht werden. Diese. es ist ein Prozess, der den Mikroprozessor vorübergehend auf die Ausführung eines anderen Programms umschaltet und dann zu dem unterbrochenen Programm zurückkehrt. Durch Drücken einer Taste auf der Tastatur initiieren wir einen sofortigen Aufruf an ein Programm, das die Taste erkennt, ihren Code in den Tastaturpuffer einträgt, aus dem er von einem anderen Programm gelesen wird. Diese. Der Mikroprozessor unterbricht für einige Zeit die Ausführung des laufenden Programms und schaltet auf den Interrupt-Handler, den sogenannten Interrupt-Handler um. Nachdem der Interrupt-Handler seine Arbeit beendet hat, setzt das unterbrochene Programm die Ausführung an dem Punkt fort, an dem es unterbrochen wurde. Die Adresse des Unwird aus der Unterbrechungsvektortabelle berechnet.

Der Interrupt-Mechanismus wird auf Hardwareebene unterstützt. Abhängig von der Quelle werden Interrupts unterteilt in:

  • Hardware-- als Reaktion des Mikroprozessors auf ein physikalisches Signal von einem Gerät (Tastatur, Systemuhr, Tastatur, Festplatte etc.) entstehen, sind diese Interrupts zeitlich asynchron, d.h. treten zu zufälligen Zeiten auf;
  • Software- werden künstlich mit Hilfe des entsprechenden Befehls aus dem Programm (int) aufgerufen, sollen einige Aktionen des Betriebssystems ausführen, sind synchron;
  • Ausnahmen- sind die Reaktion des Mikroprozessors auf eine nicht standardmäßige Situation, die im Inneren des Mikroprozessors während der Ausführung eines Programmbefehls aufgetreten ist (Division durch Null, Unterbrechung auf dem TF-Flag (Tracing)).

Hardware-Interrupt-System

Das Interrupt-System ist eine Kombination aus Software und Hardware, die den Interrupt-Mechanismus implementiert.

Die Hardware des Interrupt-Systems umfasst:

  • Mikroprozessorausgänge - Auf ihnen werden Signale erzeugt, die den Mikroprozessor darüber informieren, dass ein externes Gerät „um Aufmerksamkeit bittet“ (INTR) oder dass eine dringende Verarbeitung eines Ereignisses oder eines katastrophalen Fehlers (NMI) erforderlich ist
  • INTR - Pin für Eingabe-Interrupt-Anforderungssignal,
  • NMI - NMI-Eingangsstift
  • INTA - Ausgang für das Ausgangssignal, das den Empfang eines Interrupt-Signals durch den Mikroprozessor bestätigt (dieses Signal wird dem Eingang des gleichnamigen 8259A-Controller-Chips zugeführt;
  • programmierbarer Interrupt-Controller 8259A (zur Erfassung von Interrupt-Signalen von acht verschiedenen Externe Geräte; es ist in Form einer Mikroschaltung hergestellt; normalerweise werden zwei in Reihe geschaltete Mikroschaltungen verwendet, sodass die Anzahl möglicher Quellen für externe Interrupts bis zu 15 plus einen nicht maskierbaren Interrupt beträgt; er ist es, der die Nummer des Unterbrechungsvektors generiert und seinen Datenbus ausgibt);
  • externe Geräte (Timer, Tastatur, Magnetplatten etc.)

Interrupt-Behandlung

Ein Interrupt löst eine Reihe von Ereignissen aus, die sowohl in der Hardware als auch in der Software auftreten. Auf Abb. 1 zeigt einen typischen Ablauf dieser Ereignisse.

Nachdem das E/A-Gerät beendet wurde, geschieht Folgendes:

  • Das Gerät sendet ein Interrupt-Signal an den Prozessor.
  • Bevor auf einen Interrupt reagiert wird, muss der Prozessor die Ausführung des aktuellen Befehls abschließen (siehe Abbildung 1).
  • Der Prozessor sucht nach einem Interrupt, erkennt ihn und sendet dem Gerät, das den Interrupt gesendet hat, ein Signal, dass er ihn erfolgreich empfangen hat. Dieses Signal ermöglicht es dem Gerät, sein Unterbrechungssignal zu entfernen.
Abbildung 1. Programm-Timing-Diagramm: Langsame E/A

Nun muss sich der Prozessor darauf vorbereiten, die Steuerung an den Interrupt-Handler zu übergeben. Zuerst müssen Sie alle speichern wichtige Informationen damit Sie später zu der Stelle in der laufenden Sendung zurückkehren können, an der sie unterbrochen wurde. Die mindestens erforderlichen Informationen sind das Programmstatuswort und die Adresse des nächsten auszuführenden Befehls, der im Programmzähler steht. Diese Daten werden auf den Systemsteuerungsstapel geschoben.

Abbildung 2. Umgang mit einem einfachen Interrupt

Als nächstes wird der Programmzähler des Prozessors mit der Eingangsadresse des Interrupt-Handler-Programms geladen, das für die Verarbeitung dieses Interrupts verantwortlich ist. Abhängig von der Architektur des Computers und dem Gerät des Betriebssystems kann es entweder ein Programm zum Handhaben aller Interrupts geben, oder es kann einen separaten Handler für jedes Gerät und jeden Interrupttyp geben. Wenn es mehrere Programme gibt, die Interrupts handhaben sollen, muss der Prozessor bestimmen, welches aufgerufen werden soll. Diese Information kann im anfänglichen Unterbrechungssignal enthalten sein; Andernfalls muss der Prozessor, um die erforderlichen Informationen zu erhalten, alle Geräte der Reihe nach abfragen, um festzustellen, welches Gerät die Unterbrechung gesendet hat.

Sobald ein neuer Wert in den Programmzähler geladen wird, fährt der Prozessor mit dem nächsten Befehlszyklus fort und fährt fort, ihn aus dem Speicher abzurufen. Da die Anweisung von der Stelle abgerufen wird, deren Nummer durch den Inhalt des Programmzählers gegeben ist, geht die Steuerung zur Unterbrechungsroutine über. Die Ausführung dieses Programms beinhaltet die folgenden Operationen.

Der Inhalt des Programmzählers und das Statuswort des unterbrochenen Programms sind bereits auf dem Systemstack gespeichert. Dies sind jedoch nicht alle Informationen, die sich auf den Zustand des ausführbaren Programms beziehen. Beispielsweise müssen Sie den Inhalt der Prozessorregister speichern, da diese Register möglicherweise vom Interrupt-Handler benötigt werden. Daher ist es notwendig, alle Informationen über den Zustand des Programms zu speichern. Typischerweise beginnt ein Interrupt-Handler damit, den Inhalt aller Register auf den Stack zu schieben. Weitere Informationen, die gespeichert werden sollten, werden in Kapitel 3, Prozessbeschreibung und -kontrolle, erörtert. Auf Abb. Es wird ein einfaches Beispiel gezeigt, bei dem das Benutzerprogramm nach Ausführung eines Befehls von Stelle N unterbrochen wird. Die Inhalte aller Register sowie die Adresse des nächsten Befehls (N + 1), insgesamt M Wörter, werden auf den Stapel geschoben . Der Stapelzeiger wird so aktualisiert, dass er auf die neue Spitze des Stapels zeigt. Der Programmzähler wird ebenfalls aktualisiert, was den Beginn der Interrupt-Service-Routine anzeigt.

Jetzt kann der Interrupt-Handler seine Arbeit aufnehmen. Der Vorgang des Behandelns eines Interrupts umfasst das Prüfen von Statusinformationen bezüglich der E/A-Operationen oder anderer Ereignisse, die den Interrupt verursacht haben. Dies kann auch das Senden zusätzlicher Anweisungen oder Benachrichtigungsnachrichten an E/A-Geräte umfassen.

Nach Abschluss der Interrupt-Verarbeitung werden die zuvor gespeicherten Werte aus dem Stack geholt, die wieder in die Register eingetragen werden und somit wieder den Zustand einnehmen, in dem sie sich vor dem Interrupt befanden.

Der letzte Schritt besteht darin, das Programmstatuswort und den Inhalt des Programmzählers aus dem Stapel wiederherzustellen. Als Ergebnis wird der nächste Befehl des unterbrochenen Programms ausgeführt.

Da der Interrupt kein vom Programm aufgerufenes Unterprogramm ist, ist es für eine vollständige Wiederherstellung wichtig, alle Zustandsinformationen des unterbrochenen Programms zu sichern. Ein Interrupt kann jedoch jederzeit und überall im Anwenderprogramm auftreten. Dieses Ereignis ist unvorhersehbar.

Controller unterbrechen

Der Interrupt-Controller ist dafür ausgelegt, ankommende Dienstanforderungen von Peripheriegeräten an den zentralen Prozessor zu verarbeiten und zu arbitrieren. Analog kann man die Funktionen des Interrupt-Controllers mit der Sekretärin irgendeines Chefs vergleichen. Die Sekretärin muss anhand der vom Chef vorgegebenen Prioritäten und des Status des Besuchers entscheiden, welche der Besucher zuerst zum Chef zugelassen werden und welche dann. In einem Computersystem ist es also möglich, dass mehrere Peripheriegeräte ein Unterbrechungssignal oder eine Unterbrechungsanforderung gesendet haben. In der Computerliteratur wird dieses Signal als IRQ (Interrupt Request) bezeichnet.

Wie oben erwähnt, haben Interrupts eine bestimmte Priorität, die es Interrupt-Controllern ermöglicht, einem Gerät zu einem bestimmten Zeitpunkt den Vorzug zu geben und einem anderen nicht. In einem modernen Computer gibt es bis zu 16 externe und Peripheriegeräte die Interrupts erzeugen. Hier die Geräte:
–IRQ 0, Systemtimer; –IRQ 1, Tastatur; –IRQ 2, wird verwendet, um kaskadierte Geräte abzufragen; –IRQ 8, Echtzeituhr; –IRQ 9, reserviert; –IRQ 10, reserviert; –IRQ 11, reserviert; –IRQ 12, ps/2 – Maus; –IRQ 13, Coprozessor; –IRQ 14, Festplattencontroller; –IRQ 15, reserviert; –IRQ 3, Ports COM2, COM4; –IRQ 4, Ports COM1,COM3; –IRQ 5, LPT2-Anschluss; –IRQ 6, Laufwerkscontroller; –IRQ 7, LPT1-Anschluss, Drucker.

Hier sind die Signale nach absteigender Priorität aufgelistet. Sie werden vielleicht bemerken, dass nach IRQ 2 IRQ 8 folgt.Tatsache ist, dass der Interrupt-Controller früher aus zwei Mikroschaltkreisen bestand, von denen einer mit dem anderen verbunden war. Diese zweite Mikroschaltung ist mit der Leitung IRQ 2 verbunden und bildet eine Kaskade. Es bedient die Leitungen IRQ8-IRQ 15. Und dann folgen die Leitungen der ersten Mikroschaltung.

Betrieb des Interrupt-Controllers

Steuerungsbetrieb unterbrechen gilt als auf Intel 8259A Chips basierend, die in mittlerweile sehr alten Computern mit Prozessoren bis hin zur 386er Serie verwendet wurden. Diese Computer hatten normalerweise 2 8259A-Chips, die in Kaskade miteinander verbunden waren. Einer der über die Udirekt mit dem Prozessor verbundenen Mikroschaltkreise ist der Master oder Master. Der Rest, der durch ähnliche Schlussfolgerungen mit dem Meister verbunden ist, wird als Sklave bezeichnet.


Abbildung 3. Verbindungsdiagramm von Interrupt-Controllern und deren Interaktion mit dem Zentralprozessor

Abbildung 3 zeigt das Verbindungsdiagramm von Interrupt-Controllern und deren Interaktion mit dem zentralen Prozessor. Interrupt-Signale von Peripheriegeräten oder Slave-Steuerungen werden den Eingängen IR0–IR7 der Master-Steuerung zugeführt. Die interne Logik des Master-Controllers verarbeitet eingehende Anfragen nach Priorität. Ist die Priorität der Geräteanforderung ausreichend, so wird am Ausgang INT des Controllers ein Signal erzeugt, das dem Eingang INTR des Prozessors zugeführt wird. Andernfalls wird die Anfrage blockiert.

Wenn der Prozessor Interrupts freigibt, erzeugt er nach Abschluss der Ausführung des aktuellen Befehls eine Folge von Signalen auf der INTA-Leitung, die den Slave-Controller in einen Zustand der Immunität gegenüber eingehenden neuen Interrupt-Anforderungen versetzt, und zusätzlich Informationen aus die internen Register des Controllers auf die Datenleitung ausgegeben, woran der Prozessor den Interrupt-Typ erkennt.

Der Prozessor erteilt dem Interrupt-Controller über den Bus-Controller die Interrupt-Erlaubnis. Das RD-Signal soll sicherstellen, dass der Interrupt-Controller die Inhalte interner Register auf den Datenbus legt. Auf dem WR-Signal empfängt dagegen der Interrupt-Controller Daten vom gleichnamigen Bus und schreibt sie in interne Register. Entsprechend wirkt sich dies auf die Arbeitsweise des Interrupt-Controllers aus.

Der CS-Eingang ist mit dem Adressbus verbunden und dieses Signal identifiziert einen bestimmten Interrupt-Controller. Der Eingang A0 zeigt auf den Interrupt-Controller-Port im E/A-Raum.

Die Eingänge IR0–IR7 sind für den Empfang von Interrupt-Anforderungen von Peripheriegeräten und Slave-Controllern ausgelegt.

Die CAS0-CAS2-Ausgänge dienen zur Identifizierung eines bestimmten Slave-Controllers.

Der Artikel beschreibt Hardware-Interrupts und Gerät, Funktionen, Betrieb des Interrupt-Controllers. Dieser Interrupt-Controller tauchte in den ersten PC-kompatiblen Computern auf. Seitdem haben sich sowohl die Prozessoren als auch der Computer selbst in vielerlei Hinsicht verändert, obwohl einige Punkte bestehen bleiben. Um es klarer zu machen, wurde daher die Organisation des Interrupt-Controllers des 8295A betrachtet.

Das obige Diagramm zeigt die Signale, die nicht nur zu den Slave- und Master-Interrupt-Controllern kommen, sondern auch zu den übrigen Slaves. Ihr Computer oder Laptop hat jedoch, wie oben erwähnt, tatsächlich 2 Interrupt-Controller: einen Master und einen Slave. Aber Sie können auf diese Weise Ihre eigenen Computersysteme mit bis zu 64 Slave-Interrupt-Controllern erstellen.

BEI moderne Computer schon lange Reglerfunktionen unterbrechen 8259A-Chips nicht durchführen, aber Südbrücke. Für alle Programme und Geräte bleibt jedoch alles beim Alten. Darüber hinaus ist der Interrupt-Controller programmierbar, und auf die internen Register und Ports muss auf die gleiche Weise wie beim 8259A-Controller zugegriffen werden.

Fazit

In dieser Arbeit wurden Interrupts betrachtet, nämlich die Hardware der Interrupt-Verarbeitung und das Prinzip der Interrupt-Verarbeitung. Interrupt-Controller und das Prinzip ihrer Funktionsweise werden ebenfalls betrachtet.

Unterbrechung bedeutet die vorübergehende Unterbrechung des Hauptverarbeitungsprozesses, um einige geplante oder ungeplante Aktionen auszuführen, die durch den Betrieb der Hardware oder des Programms verursacht werden. Der Interrupt-Mechanismus wird auf Hardwareebene unterstützt. Hardware-Interrupts treten als Reaktion des Mikroprozessors auf ein physikalisches Signal von einem Gerät (Tastatur, Systemuhr, Tastatur, Festplatte usw.) auf, diese Interrupts sind zeitlich asynchron, d.h. treten zu zufälligen Zeiten auf.

Controller unterbrechen dient zum Verarbeiten und Arbitrieren eingehender Dienstanforderungen an den zentralen Prozessor von Peripheriegeräten. Interrupts haben eine bestimmte Priorität, die es ermöglicht Controller unterbrechen Bevorzugen Sie zu einem bestimmten Zeitpunkt ein Gerät gegenüber einem anderen. In einem modernen Computer gibt es bis zu 16 externe und periphere Geräte, die Interrupts erzeugen.

Referenzliste

  1. Vorlesung. Unterbricht. Email Ressource. http://hromatron.narod.ru/_lekcii/prerivania_lekcia_g2013.htm
  2. Systemunterbrechungen | Hardware-Interrupt | Unterbrechungsbehandlung http://life-prog.ru/view_os.php?id=16
  3. Controller unterbrechen. Email Ressource http://sdelaycomputersam.ru/Controller_irq.php,
  4. Unterbricht. Controller unterbrechen. Gerät, Funktionen, Arbeit. Email Ressource http://sdelaycomputersam.ru/Controller_irq.php
  5. Aufbau und Initialisierung des Interrupt-Controllers Intel 8259A

Ich denke, viele neugierige Benutzer sind wahrscheinlich schon mehr als einmal auf eine solche Abkürzung wie IRQ gestoßen. Es ist beispielsweise zu finden, wenn Sie in Windows im Geräte-Manager-Programm nachsehen möchten. Wenn Sie ein Gerät auswählen, z. B. eine Tastatur, wählen Sie mit der rechten Maustaste den Menüpunkt "Eigenschaften" aus und aktivieren Sie im angezeigten Fenster die Registerkarte "Ressourcen". In der Liste der Ressourcen sehen Sie dann die Inschrift IRQ 01.

Was ist IRQ und wozu dient es?

Die Abkürzung IRQ steht für Interrupt ReQuest (Interrupt Request). Um zu verstehen, warum es benötigt wird, sollte man sich an die Details der Organisation der Arbeit eines Personal Computers erinnern.

Das Kreislaufsystem eines Computers, durch das der Prozessor und andere Geräte Informationen austauschen, ist System Bus. Aber wie ist der Prozessor im Allgemeinen in der Lage, über den Bus kommende Ivon verschiedenen Geräten zu unterscheiden?

Dafür gibt es ein System von Hardware-Interrupts (IRQ). Jeder Interrupt hat eine bestimmte Nummer (die Nummerierung beginnt bei 0) und ist einem bestimmten Gerät zugeordnet. Der Tastatur wird also die Interrupt-Nummer 1 zugewiesen, daher die Bezeichnung IRQ 01.

Wenn eine Anfrage vom Gerät empfangen wird, unterbricht der Computer (daher der Begriff „Unterbrechung“) die Verarbeitung aktueller Informationen und beginnt mit der Verarbeitung der neu empfangenen. Wenn mehrere Interrupts vorhanden sind, werden sie in der Reihenfolge der ihnen zugewiesenen Prioritäten verarbeitet. Je kleiner die Interrupt-Nummer ist, desto höher ist in der Regel die Priorität für den Prozessor, der das diesem Interrupt zugeordnete Gerät hat, aber diese Regel wird nicht immer eingehalten.

Zur Verarbeitung von IRQ dient ein spezieller Chip, der als Interrupt-Controller bezeichnet wird. Diese Mikroschaltung ist in der Regel Teil der Zentraleinheit und wird manchmal als separater Chip auf der Hauptplatine zugewiesen. Um jeden Interrupt im BIOS zu handhaben, gibt es eine spezielle Firmware, die als Interrupt-Handler bezeichnet wird. Die Adressen aller Handler werden in der sogenannten Interrupt-Vektortabelle gespeichert.

Zuvor war 8-Bit in den ersten Computern der XT-Familie üblich, sodass den Geräten insgesamt 8 Interrupts zur Verfügung standen. Mit dem Aufkommen des 16-Bit-ISA-Bus stieg ihre Zahl auf 16.

Unterbrechungsanforderung einstellen

Ich muss sagen, dass die einigen Geräten zugewiesenen Interrupts nicht fest sind und programmgesteuert geändert werden können. Zum Beispiel wird IRQ häufig von Serial verwendet COM-Port 2 kann auch ein im Erweiterungssteckplatz installiertes Modem verwenden. In modernen Computern und Betriebssystemen, die den PnP-Standard unterstützen und unter Windows laufen, werden IRQ-Werte für an Bussteckplätze angeschlossene Geräte automatisch ausgewählt.

Aber früher war es nicht so einfach, als der Benutzer den IRQ-Wert in vielen DOS-Programmen manuell setzen musste. Zum Beispiel beim Einbau Soundkarte, musste der Benutzer aus einer sehr kleinen Anzahl verfügbarer Interrupts einen freien auswählen (normalerweise war es IRQ 5) und diesen Wert in dem zu startenden Programm angeben, beispielsweise in einem Spiel.

In vielen BIOS ist es möglich, die voreingestellten IRQ-Werte im Setup-Programm zu ändern. Diese Option befindet sich normalerweise in den Abschnitten IRQ-Ressourcen oder PCI/PNP-Konfiguration.

Das Setzen eines IRQ-Werts für ein Gerät gleich dem IRQ-Wert, der bereits von einem Gerät belegt ist, führt in den meisten Fällen zur Inoperabilität eines dieser Geräte oder beider gleichzeitig, und manchmal ist dies mit einem Einfrieren des Computers verbunden.

Bei dem moderneren PCI-Bus wurde das Interrupt-Steuersystem radikal geändert und die Interrupt-Steuerfähigkeiten wurden erweitert. Dank der IRQ-Sharing-Technologie ist es außerdem möglich geworden, mehrere Geräte auf einem Interrupt-Kanal zu platzieren, und externe Geräte, die an PCI-Steckplätzen angeschlossen sind, haben die Fähigkeit, Ressourcen automatisch untereinander zu verteilen.

Darüber hinaus verwenden moderne Computer üblicherweise einen erweiterten programmierbaren Interrupt-Controller (APIC, ), der 24 Kanäle von Interrupt ReQuest unterstützt. Der erweiterte Interrupt-Controller besteht aus zwei Mikroschaltkreisen, von denen sich einer im Prozessor selbst und der andere auf der Hauptplatine befindet. Dieser Interrupt-Controller tauchte zuerst in Systemen auf, die auf Pentium-Prozessoren basierten. Die Unterstützung für das alte Interrupt-System wurde jedoch aus Kompatibilitätsgründen beibehalten. Der nächste Schritt in der Entwicklung der Prinzipien der Interrupt-Behandlung ist die Message Signaled Interrupts-Technologie, deren Unterstützung in der Windows-Betriebssystemlinie ab Windows Vista auftauchte.

Verwechseln Sie Hardware-IRQs nicht mit BIOS-Software-Interrupts, die in einem separaten Artikel behandelt werden. BIOS-Software-Interrupts werden normalerweise verwendet, um die Arbeit zu organisieren Software mit Eingabe-Ausgabe-Geräten und werden mit der Abkürzung INT bezeichnet. Viele von ihnen haben eine ähnliche Funktion wie Hardware-IRQs, haben aber unterschiedliche Nummern.

Liste der Interrupt-ReQuest-Nummern im Standardschema für den 16-Bit-ISA-Bus:

  1. Systemtimer
  2. Klaviatur
  3. Optionaler Interrupt-Controller (für 8-Bit-Bus-Kompatibilität)
  4. Com 1 und 3 Ports
  5. Com 2 und 4 Ports
  6. Kostenlos (im 8-Bit-Bus - Festplattencontroller)
  7. Regler Disketten(FDD)
  8. Parallelanschluss LPT
  9. CMOS-Echtzeituhr
  10. Kombiniert mit IRQ 2
  11. Frei
  12. Frei
  13. PS/2-Mausanschluss
  14. Coprozessor (aktuell kaum genutzt)
  15. Erster IDE-Controller
  16. Zweiter IDE-Controller

Liste zusätzlicher IRQs, die der APIC Extended Interrupt Controller verwendet:

  1. USB-Controller
  2. Integriertes Audio-Subsystem (AC'97 oder HDA)
  3. USB-Controller
  4. USB-Controller
  5. Integrierte Netzwerkkarte
  6. Frei
  7. Frei
  8. USB 2.0-Controller

Korrespondenz von IRQ-Nummern und BIOS-Interrupts:

Korrelationstabelle zwischen Hardware-IRQ und Software-INT-BIOS

Fazit

In diesem Artikel konnten Sie also herausfinden, was die Abkürzung IRQ bedeutet und was Hardware-Interrupts sind. Sie sind ein integrierter Mechanismus zum Zuweisen von Computerressourcen und wurden entwickelt, um den Gerätezugriff auf den zentralen Prozessor zu organisieren. Die richtige IRQ-Zuweisung und -Abstimmung vermeidet Konflikte zwischen Geräten und stellt sicher stabile Arbeit Systeme.

IRQ-Prioritätsverwaltung

Hardware-Interrupt-Request-Management

Den meisten Komponenten, die direkt mit dem Motherboard verbunden sind, einschließlich PCI-Steckplätzen, IDE-Controllern, seriellen Anschlüssen, Tastaturanschlüssen und sogar dem Motherboard-CMOS, werden separate IRQs zugewiesen. Eine Hardware-Interrupt-Anforderung oder IRQ unterbricht den normalen Betrieb des Prozessors, wodurch das Gerät funktionieren kann. Windows 7 ermöglicht es Ihnen, einen oder mehrere IRQs (die einem oder mehreren Geräten zugeordnet sind) zu priorisieren, wodurch die Leistung dieser Geräte möglicherweise verbessert wird.

Schritte zum Ändern der IRQ-Priorität

  1. Führen Sie zunächst das Systeminformationsprogramm (msinfo32.exe) aus und öffnen Sie den Systeminformationszweig Hardwareressourcen-Interrupts (IRQs), um zu sehen, welche IRQs für welche Geräte verwendet werden.
  2. Öffnen Sie dann den Registrierungseditor (siehe Kapitel 3) und navigieren Sie zum Zweig HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl.
  3. Erstellen Sie in diesem Abschnitt einen neuen DWORD-Wert und benennen Sie den Parameter IRQ#Priority, wobei # die Nummer des IRQ-Geräts ist, für das Sie die Priorität festlegen möchten (z. B. IRQ13Priority entspricht IRQ 13, also einem arithmetischen Koprozessor). .
  4. Doppelklicken Sie auf den neuen Wert und geben Sie die Prioritätsnummer ein. Geben Sie 1 für die höchste Priorität ein, 2 für die zweite usw. Achten Sie darauf, dass Sie nicht für zwei Einträge dieselbe Zahl eingeben, und versuchen Sie nicht, alles auf einmal zu tun, sondern experimentieren Sie mit ein oder zwei Werten.
  5. Wenn Sie fertig sind, schließen Sie den Registrierungseditor und starten Sie Ihren Computer neu.