Hallo, so wie ich es verstehe hängen seit PCI mehrere interuptfähige Pheripheriecontroller an einem Interrupteingang der CPU. D.h. jeder Controller kann den Interrupt (gleichzeitig) auslösen. Wie erfolgt die Registrierung der Treiber die für diesen Interrupt zuständig sind und woran erkennt das Betriebssystem welcher Treiber den Interrupt abarbeitet um diesen aufzurufen oder macht das jeder Treiber selber und das Betriebssystem ruft die nacheinander auf? Alles auf Windows-Systemen. Bin auch für Links dankbar die das gut erklären. Und nebenbei, ist irgendwo festgelegt welcher Kern einer Mehrkern-CPU die Interrupts abarbeitet oder kommt da jeder mal dran?
:
Verschoben durch Moderator
Hans H. schrieb: > so wie ich es verstehe hängen seit PCI mehrere interuptfähige > Pheripheriecontroller an einem Interrupteingang der CPU. da hängt noch ein APIC dazwischen https://de.wikipedia.org/wiki/Advanced_Programmable_Interrupt_Controller > Und nebenbei, ist irgendwo festgelegt welcher Kern einer Mehrkern-CPU > die Interrupts abarbeitet oder kommt da jeder mal dran? Kann der Treiber festlegen, und der Admin ggfs. überschreiben. https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/interrupt-affinity-and-priority
Hans H. schrieb: > so wie ich es verstehe hängen seit PCI mehrere interuptfähige > Pheripheriecontroller an einem Interrupteingang der CPU. Nicht ganz. Bei ISA gab es hier von den herkömmlichen i8259 Interruptcontrollern (PIC) bereitgestelle Interrupt-Leitungen, auf die sich die Peripherie draufhängen konnte. Diese waren flankengetriggert, was für das Interruptsharing doof war. Bei PCI hatte jeder Slot bis zu 4 Interrupt-Leitungen, die auf die herkömmlichen 8259-Interupteingänge aufgeteilt wurden. Diese konnten pegelgetriggert sein, was das Interruptsharing ermöglicht hat. Die Interruptroutine musste jeden infrage kommenden Baustein abfragen, ob er den Interrrupt ausgelöst hat. Später kam dann ein sogenannter APIC (Advanced PIC) und sogenannte Message Signalled Interrupts (MSI) dazu. MSIs haben keine dedizierten Leitungen mehr, sondern sind spezielle Pakete auf dem Bus, Diese lösen dann eigene Interruptvektoren aus, die dann gleich die passenden Interruptroutinen aufrufen. Bei PCIe gibt es keine herkömmlichen Interrupts mehr, sondern nur noch Message Signalled Interrupts. > Wie erfolgt die Registrierung der Treiber die für diesen Interrupt > zuständig sind und woran erkennt das Betriebssystem welcher Treiber den > Interrupt abarbeitet um diesen aufzurufen oder macht das jeder Treiber > selber und das Betriebssystem ruft die nacheinander auf? Alles auf > Windows-Systemen. Das hängt davon ab, was das für ein Treiber ist - ein herkömmlicher NT Kernel Driver, ein WDM Treiber, ein KMDF Treiber oder ein UMDF Treiber. Das steht dann alles in den entsprechenden Microsoft Dokumentationen drin. Stichwort MSDN, Windows SDK und Windows DDK. Das Thema ist hier fürs Forum viel zu komplex. > Und nebenbei, ist irgendwo festgelegt welcher Kern einer Mehrkern-CPU > die Interrupts abarbeitet oder kommt da jeder mal dran? Normalerweise werden die Interrupts auf die Kerne verteilt, aber man kann das konfigurieren, welvcher Interrupt auf welchen Kernen landet. Genauso kann man Prozesse und Threads an bestimmte Kerne binden. "Affinity" ist hier das Stichwort. Wie gesagt, ohne die Microsoft Dokumentation und Treiberpacks etc kannst Du das alles vergessen. fchk
:
Bearbeitet durch User
Danke für die nützlichen Antworten, da ist doch einiges was ich noch nicht kannte. Insbesondere den APIC und message signaled Interrupt. Bin halt ein Kind der achtziger :)
Interrupt sharing gibts aber natürlich immer noch. Dann muss der Treiber in den Registern seines Gerätes nachschauen, ob es tatsächlich etwas zu tun gibt. Wenn nicht, muss tut er einfach nicht und der Interrupt war für andere Gerät(e)
Der Intel 8259 Programmable Interrupt Controller (PIC) ist nicht für multiprozessorfähig. ( https://docplayer.org/3323526-Interrupts-seminar-rechnerarchitektur.html ) Die weitere Entwicklung betrifft sowohl CPU- wie auch Mainboard-Geschichte. Zusätzliche wichtige Stichworte sind Hyper Transport (HT) (Nicht Hyperthreading, das heißt auch HT!) bzw. QuickPath Interconnect (QPI,Intel) Ein weiteres wichtiges Stichwort ist Memory-Mapping. https://www.diva-portal.org/smash/get/diva2:578377/fulltext01.pdf https://softwareengineering.stackexchange.com/questions/358483/help-with-memory-mapped-i-o-and-hardware-interrupts-for-virtual-machine ..und dass die Interrupts bei PCI als optional eingestuft werden. Außerdem hinzu kommt noch BIOS vs UEFI.
Frank K. schrieb: > Normalerweise werden die Interrupts auf die Kerne verteilt, aber man > kann das konfigurieren, welvcher Interrupt auf welchen Kernen landet. Unter Linux kann man das mit irqbalance einstellen. https://linux.die.net/man/1/irqbalance
Herbert B. schrieb: > Unter Linux kann man das mit irqbalance einstellen. > https://linux.die.net/man/1/irqbalance Hast du zufällig auch einen Tipp, wie man diese Mausprobleme bei normaler Baldurs Gate 2 Installation in Linux/Fedora in den Griff bekommt? Die Maus reagiert viel zu langsam auf Spielereignisse, oder die Maus wird vielfach angezeigt, oder beides gleichzeitig, blinkende Anzeige, und schlechte Ereignisverarbeitung. Wenn ich in der Baldurs INI "3 D Acceleration" auf 1 setze, und dann das Spiel mit "dedizierter Grafikkarte" starte, stürzt das Spiel, bzw. die Grafikkarte zusammen mit dem Betriebsystem böse ab. ( ;) )
> Mausprobleme
Einfach eine Busmaus nehmen.
... schrieb: > Einfach eine Busmaus nehmen. Das Spiel läuft normal auf dem Windows 8 NB, also könnte ich es da drauf spielen. Allerdings geht kein Vollbild über die Intel-Cpu-Grafik und der Spielbildschirm ist am Ende sehr klein.
Hans H. schrieb: > Insbesondere den APIC und message signaled Interrupt. > Bin halt ein Kind der achtziger :) Dann stelle Dir vor, Interruptsharing ist wie bei den PIC. Es gibt nur einen Vector und die CPU muß erst umständlich alle freigegebenen Interruptquellen abfragen. Das APIC ist dann ähnlich dem Z80, die auslösende Peripherie legt die Vectornummer auf den Bus.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.