Réponse courte
Les deux claviers fonctionneraient de manière absolument égale pour le code de niveau utilisateur. Il peut y avoir de petites différences ( nano- à micro- secondes sur un PC moderne) si vous écrivez des pilotes de périphérique. Si le système se bloque, les deux claviers ne résoudraient pas le problème. Optez pour un redémarrage dur.
Réponse longue TL; DR;
Qu'est-ce qu'une interruption?
Lorsque le matériel (ou un élément essentiel du logiciel interne du système d'exploitation, comme le noyau) nécessite un service de processeur, il déclenche un message ou une interruption , qui demande au processeur de reporter ce qu'il fait et de gérer cette demande.
Comment ça fonctionne?
Lorsque le matériel génère une interruption (par exemple, une pression sur une touche), cette demande va dans un contrôleur d'interruption. Le contrôleur interrompt alors immédiatement le CPU sur une seule ligne de son code machine (le CPU exécute toujours cette dernière ligne). Une fois que le processeur est prêt à traiter cette demande, il demande à un contrôleur d' interruption une demande d'interruption (IRQ) et une routine de traitement. Le contrôleur d'interruption a une structure de données interne - Interrupt Dispatch Table qui contient un pointeur vers une routine qui est censée être exécutée par le CPU pour une IRQ particulière.
Toutes les différentes interruptions correspondent à un niveau de demande d'interruption limité (IRQL) bien défini . Par exemple, sur les systèmes x86, il y a 32 IRQL, et sur x64 et IA64, il y en a en fait moins - 16 IRQL. De toute évidence, il existe plus de périphériques matériels et de services logiciels que les IRQL, ce qui signifie que tous les objets système partageront les IRQL.
Table IRQLs pour x64
IRQL | La description
--------------------------------------------
15 | Haut profil
14 | Interruption / alimentation interprocesseur
13 | L'horloge
12 | Sync
11 | Périphérique N
.. | ...
3 | Appareil 1
2 | Envoi / DPC
1 | APC
0 | Passif / faible
Un IRQL supérieur (avec un plus grand nombre) a une priorité plus élevée. Tous les composants d'un système essaient de maintenir l'IRQL actuel d'un processeur au niveau le plus bas possible - 0. Si une interruption de niveau supérieur se produit, le niveau IRQL actuel d'un processeur est augmenté et les interruptions de niveau inférieur ne seront traitées que toutes les interruptions de niveau supérieur sont résolues. L'IRQ peut être traité par lots si le planificateur d'IRQ est capable de mettre en file d'attente plusieurs IRQ du même niveau pour l'exécution du processeur.
Dans quel but?
Tout cela a été vraiment bien conçu pour séparer l'utilisateur final de la complexité du matériel et créer une architecture universelle qui peut fonctionner avec de nombreux types de matériel / logiciel.
Le code au niveau de l'utilisateur (c'est-à-dire pas au niveau du noyau) n'est exécuté que lorsque le processeur est à l'IRQL passif / bas (0). Le fait est que vous ne pouvez gérer un événement appuyé sur une touche dans votre application qu'une fois tous les IRQL traités. Par conséquent, pour un clavier, peu importe quel IRQL est affecté à l'interruption matérielle.
IRQL ne sont que des abstractions du système d'exploitation et ne sont pas figés . L'IRQ et l'IRQL correspondants sont stockés dans le registre Windows (par exemple), et tout utilisateur enthousiaste peut les modifier manuellement.
Conclusions
Citations de la question
Parce que les claviers USB reposent sur un pilote générique USB et une architecture qui n'a accès qu'à quelques canaux IRQ, il ne peut pas donner au clavier un accès à une IRQ aussi prioritaire qu'un autre (disons PS2).
L'auteur a peut-être voulu dire un IRQL inférieur au lieu des canaux IRQ moins nombreux . Quoi qu'il en soit, cela n'a pas vraiment d'importance car il n'est pas visible pour l'utilisateur sur n'importe quel PC moderne. Les différences possibles sont de l'ordre de la nano à la micro- seconde et elles ne se produisent qu'au niveau du noyau. Dans les deux cas, le code de niveau utilisateur est bloqué par le noyau du système d'exploitation.
Est-ce que cela (si c'est vrai) signifie que les claviers USB seraient moins réactifs que les claviers branchés sur un autre type de port?
Ce n'est pas vrai à cause de la façon dont le système d'exploitation a été conçu. Si le système d'exploitation est occupé par quelque chose et est "lent", les deux claviers se comporteraient de manière identique.
Prenons par exemple un clavier USB mappé à une IRQ de priorité moyenne, sur un système défectueux qui est bloqué sur une autre routine d'interruption de priorité moyenne
Dans ce cas, le système sera BSOD, les routines de traitement IRQ doivent être conçues jusqu'à un certain standard (telles qu'elles doivent être rapides, synchrones, non bloquantes, etc.). Tout écart par rapport à cela et le noyau BSOD.
En raison de sa priorité relativement égale, les événements de clavier seraient ignorés et vous ne pourrez pas envoyer Ctrl-Alt-del ou toute autre frappe d'urgence.
Si le système se bloque, il y a beaucoup de choses qui peuvent mal tourner, mais très probablement, la frappe IRQL sera gérée au niveau du pilote. Le problème est qu'il ne sera pas remis à l'application qui s'est abonnée à une telle notification, car le système d'exploitation est occupé à faire autre chose.