Resposta curta
Ambos os teclados teriam desempenho absolutamente igual para o código no nível do usuário. Pode haver pequenas diferenças ( nano a microssegundos em um PC moderno) se você escrever drivers de dispositivo. Se o sistema travar, os dois teclados não resolveriam o problema. Vá para reinicialização completa.
Resposta longa TL; DR;
O que é uma interrupção?
Quando o hardware (ou alguma parte crítica do software interno do SO, como o kernel) requer um serviço de processador, ele aciona uma mensagem ou uma interrupção , solicitando que o processador adie o que está fazendo e atenda a essa solicitação.
Como funciona?
Quando o hardware gera uma interrupção (por exemplo, pressionar uma tecla), essa solicitação entra em um controlador de interrupção. O controlador interrompe imediatamente a CPU em uma única linha de seu código de máquina (a CPU ainda executa esta última linha). Quando o processador está pronto para atender a essa solicitação, solicita a um controlador de interrupção uma solicitação de interrupção (IRQ) e uma rotina de manipulação. O controlador de interrupção possui uma estrutura de dados interna - Tabela de Despacho de Interrupção que contém um ponteiro para uma rotina que deveria ser executada pela CPU para um IRQ específico.
Todas as interrupções diferentes correspondem ao nível de solicitação de interrupção (IRQL) limitado bem definido . Por exemplo, em sistemas x86, existem 32 IRQLs e, em x64 e IA64, existem realmente menos - 16 IRQLs. Claramente, existem mais dispositivos de hardware e serviços de software que os IRQLs, o que significa que todos os objetos do sistema compartilham IRQLs.
Tabela IRQLs para x64
IRQL Descrição
--------------------------------------------
15 Alto / Perfil
14 Interrupção do Interprocessador / Potência
13 Relógio
12 Sincronizar
11 Dispositivo N
.. ...
3 Dispositivo 1
2 Despacho / DPC
1 | APC
0 Passivo / Baixo
IRQL maior (com número maior) tem prioridade mais alta. Todos os componentes de um sistema tentam manter o IRQL atual de um processador no nível mais baixo possível - 0. Se ocorrer uma interrupção de nível superior, o nível atual de IRQL de um processador é aumentado e as interrupções com nível inferior não serão tratadas até todas as interrupções com níveis mais altos são resolvidas. O IRQ pode ser manipulado em lote se o planejador de IRQ conseguir enfileirar vários IRQs do mesmo nível para execução do processador.
Qual é o ponto?
Tudo isso foi muito bem projetado para separar o usuário final das complexidades do hardware e criar uma arquitetura universal que pode funcionar com muitos tipos de hardware / software.
O código no nível do usuário (ou seja, não no nível do kernel) é executado apenas quando o processador está no IRQL Passivo / Baixo (0). A questão é que você só pode manipular um evento pressionado por tecla em seu aplicativo depois que todos os IRQLs forem manipulados. Portanto, para um teclado, não importa o IRQL atribuído à interrupção do hardware.
IRQL são apenas abstrações de SO e não são definidas . O IRQ e o IRQL correspondentes são armazenados no registro do Windows (por exemplo) e qualquer usuário entusiasmado pode alterá-los manualmente.
Conclusões
Citações da pergunta
Como os teclados USB dependem de um driver e arquitetura genéricos USB que só têm acesso a alguns canais de IRQ, ele não pode conceder ao teclado acesso a um IRQ com a prioridade mais alta que outro controlador (digamos PS2).
Talvez o autor tenha dito um menor IRQL em vez de menos canais de IRQ . De qualquer forma, isso realmente não importa, pois não é visível para o usuário em nenhum PC moderno. As possíveis diferenças são do nível de nano a microssegundos e ocorrem apenas no nível do kernel. Nos dois casos, o código no nível do usuário é bloqueado pelo kernel do SO.
Isso (se for verdade) significa que os teclados USB seriam menos responsivos do que os teclados conectados a outro tipo de porta?
Não é verdade por causa da maneira como o sistema operacional foi projetado. Se o sistema operacional estiver ocupado com algo e for "lento", os dois teclados se comportariam de forma idêntica.
Tomemos, por exemplo, um teclado USB mapeado para um IRQ de prioridade média, em um sistema com defeito que está preso em outra rotina de interrupção de prioridade média
Nesse caso, o sistema terá BSOD, as rotinas de manuseio de IRQ devem ser projetadas de acordo com um determinado padrão (por exemplo, devem ser rápidas, síncronas, sem bloqueio, etc.). Qualquer desvio disso e do kernel será BSOD.
Devido à sua prioridade relativamente igual, os eventos do teclado seriam ignorados e você não poderá enviar Ctrl-Alt-del ou qualquer outro pressionamento de tecla de emergência.
Se o sistema travar, muitas coisas podem dar errado, mas provavelmente o IRQL de pressionamento de tecla será tratado no nível do driver. O problema é que ele não será entregue ao aplicativo que assinou essa notificação, pois o sistema operacional está ocupado fazendo outra coisa.