Kurze Antwort
Beide Tastaturen würden für den Code auf Benutzerebene absolut die gleiche Leistung erbringen. Beim Schreiben von Gerätetreibern kann es zu kleinen Unterschieden kommen ( Nanosekunden bis Mikrosekunden auf einem modernen PC). Wenn das System hängen bleibt, können beide Tastaturen das Problem nicht lösen. Machen Sie einen harten Neustart.
Lange Antwort TL; DR;
Was ist ein Interrupt?
Wenn Hardware (oder ein kritischer Teil der betriebssysteminternen Software, wie der Kernel) einen Prozessordienst benötigt, wird eine Nachricht oder ein Interrupt ausgelöst , die bzw. der den Prozessor auffordert, alle Aktionen zu verschieben und diese Anforderung zu verarbeiten.
Wie es funktioniert?
Wenn die Hardware einen Interrupt generiert (z. B. einen Tastendruck), wird diese Anforderung an einen Interrupt-Controller gesendet. Die Steuerung unterbricht die CPU dann sofort in einer einzigen Zeile ihres Maschinencodes (die CPU führt die letzte Zeile noch aus). Sobald der Prozessor bereit ist, diese Anforderung zu bearbeiten, fordert er von einem Interrupt-Controller eine Interrupt-Anforderung (IRQ) und eine Verarbeitungsroutine an. Interrupt-Controller hat eine interne Datenstruktur - Interrupt-Dispatch-Tabelle , die einen Zeiger auf eine Routine enthält, die von der CPU für einen bestimmten IRQ ausgeführt werden soll.
Alle verschiedenen Interrupts entsprechen einem genau definierten IRQL ( Interrupt Request Level ). Auf x86-Systemen gibt es beispielsweise 32 IRQLs, und auf x64 und IA64 gibt es tatsächlich weniger - 16 IRQLs. Es ist klar, dass es mehr Hardware- und Softwaredienste als IRQLs gibt, was bedeutet, dass alle Systemobjekte IRQLs gemeinsam nutzen.
IRQLs-Tabelle für x64
IRQL | Beschreibung
--------------------------------------------
15 | Hoch / Profil
14 | Interprozessor Interrupt / Power
13 | Uhr
12 | Synchronisieren
11 | Gerät N
.. | ...
3 | Gerät 1
2 | Versand / DPC
1 | APC
0 | Passiv / Niedrig
Höhere IRQL (mit größerer Anzahl) haben höhere Priorität. Alle Komponenten eines Systems versuchen, den aktuellen IRQL-Wert eines Prozessors auf dem niedrigstmöglichen Wert (0) zu halten. Tritt ein Interrupt auf höherer Ebene auf, wird der aktuelle IRQL-Wert eines Prozessors angehoben und die Interrupts mit niedrigerer Ebene werden erst verarbeitet Alle Interrupts mit höheren Pegeln werden aufgelöst. IRQ kann im Stapelbetrieb verarbeitet werden, wenn der IRQ-Scheduler mehrere IRQs derselben Ebene für die Prozessorausführung in die Warteschlange stellen kann.
Was ist der Sinn?
Dies alles wurde sehr gut entwickelt, um den Endbenutzer von der Komplexität der Hardware zu trennen und eine universelle Architektur zu schaffen, die mit vielen Arten von Hardware / Software arbeiten kann.
Code auf Benutzerebene (dh nicht auf Kernelebene) wird nur ausgeführt, wenn sich der Prozessor im Passiv / Niedrig (0) -IRQL befindet. Das Wichtigste ist, dass Sie ein Ereignis mit gedrückter Taste in Ihrer Anwendung nur dann verarbeiten können, wenn alle IRQLs verarbeitet wurden. Daher spielt es für eine Tastatur keine Rolle, welche IRQL dem Hardware-Interrupt zugewiesen ist.
IRQL sind nur OS-Abstraktionen und nicht in Stein gemeißelt . Entsprechende IRQs und IRQLs werden beispielsweise in der Windows-Registrierung gespeichert und können von jedem begeisterten Benutzer manuell geändert werden.
Schlussfolgerungen
Zitate aus der Frage
Da USB-Tastaturen auf einem generischen USB-Treiber und einer USB-Architektur basieren, die nur auf einige IRQ-Kanäle zugreifen kann, kann die Tastatur keinen IRQ mit einer so hohen Priorität wie ein anderer Controller (z. B. PS2) erhalten.
Vielleicht meinte der Autor weniger IRQL als weniger IRQ-Kanäle . Auf jeden Fall spielt es keine Rolle, da es für den Benutzer auf keinem modernen PC sichtbar ist. Die möglichen Unterschiede liegen zwischen Nanosekunden und Mikrosekunden und treten nur auf Kernelebene auf. In beiden Fällen wird Code auf Benutzerebene vom Betriebssystemkern blockiert.
Bedeutet dies (wenn es stimmt), dass USB-Tastaturen weniger ansprechend sind als Tastaturen, die an einen anderen Anschlusstyp angeschlossen sind?
Es ist nicht wahr, weil das Betriebssystem so konzipiert ist. Wenn das Betriebssystem mit etwas beschäftigt und "langsam" ist, verhalten sich beide Tastaturen identisch.
Nehmen Sie zum Beispiel eine USB-Tastatur, die einem IRQ mittlerer Priorität zugeordnet ist, auf einem fehlerhaften System, das an einer anderen Interruptroutine mittlerer Priorität hängt
In diesem Fall wird das System BSOD, IRQ-Behandlungsroutinen müssen bis zu einem bestimmten Standard entworfen werden (wie sie müssen schnell, synchron, nicht blockierend usw. sein). Jede Abweichung von diesem und dem Kernel wird BSOD.
Aufgrund der relativ gleichen Priorität werden Tastaturereignisse ignoriert und Sie können weder Strg-Alt-Entf noch andere Nottastenanschläge senden.
Wenn das System hängen bleibt, kann vieles schief gehen, aber höchstwahrscheinlich wird der Tastaturbefehl IRQL auf Treiberebene gehandhabt. Das Problem ist, dass es nicht an die Anwendung gesendet wird, die eine solche Benachrichtigung abonniert hat, da das Betriebssystem gerade mit anderen Aufgaben beschäftigt ist.