Resposta curta
Ambos os teclados teriam um desempenho absolutamente igual para o código no nível do usuário. Pode haver pequenas diferenças ( nano - para micro - segundos em um PC moderno) se você gravar drivers de dispositivo. Se o sistema travasse, ambos os teclados não resolveriam o problema. Vá para hard reboot.
Resposta longa TL; DR;
O que é uma interrupção?
Quando o hardware (ou alguma parte crítica do software interno do sistema operacional, como o kernel) requer um serviço de processador, ele dispara uma mensagem ou uma interrupção , que solicita que o processador adie o que está fazendo e manipule essa solicitação.
Como funciona?
Quando o hardware gera uma interrupção (por exemplo, um pressionamento de 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 estiver pronto para atender a essa solicitação, ele solicitará a um controlador de interrupção uma Solicitação de interrupção (IRQ) e uma rotina de manuseio. O controlador de interrupções tem uma estrutura de dados interna - Interrupt Dispatch Table , que contém um ponteiro para uma rotina que deve ser executada pela CPU para um determinado IRQ.
Todas as interrupções diferentes correspondem a Nível de solicitação de interrupção bem definido e limitado (IRQL ). Por exemplo, em sistemas x86 existem 32 IRQLs, e em x64 e IA64 existem menos - 16 IRQLs. Claramente, há mais dispositivos de hardware e serviços de software do que IRQLs, o que significa que todos os objetos do sistema compartilharão os IRQLs.
Tabela IRQLs para x64
IRQL | Description
--------------------------------------------
15 | High/Profile
14 | Interprocessor interrupt/Power
13 | Clock
12 | Sync
11 | Device N
.. | ...
3 | Device 1
2 | Dispatch/DPC
1 | APC
0 | Passive/Low
O IRQL mais alto (com maior número) tem maior prioridade. Todos os componentes de um sistema tentam manter o atual IRQL de um processador no nível mais baixo possível - 0. Se ocorrer uma interrupção de nível mais alto, o nível atual de IRQL de um processador é elevado e as interrupções com nível mais baixo não serão manipuladas até todas as interrupções com níveis mais altos são resolvidas. O IRQ pode ser tratado em lote se o agendador de IRQ puder enfileirar vários IRQs do mesmo nível para a execução do processador.
Qual é o objetivo?
Tudo isso foi muito bem projetado para separar o usuário final das complexidades do hardware e criar uma arquitetura universal que pode trabalhar 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). O ponto é que você só pode manipular um evento pressionado em sua aplicação após todos os IRQLs terem sido manipulados. Portanto, para um teclado, não importa qual IRQL é atribuído à interrupção de hardware.
-
IRQL são apenas abstrações do sistema operacional e não estão definidas na pedra . IRQ e IRQL correspondentes são armazenados no registro do Windows (por exemplo) e qualquer usuário entusiasta pode alterá-los manualmente.
Conclusões
Citações da pergunta
Because USB keyboards rely on a USB generic driver and architecture
that has only access to a few IRQ channels, it cannot give the
keyboard access to an IRQ as priority-high as another (say PS2)
controller would.
Talvez o autor significasse IRQL menor em vez dos menos canais IRQ . De qualquer forma, isso realmente não importa, pois não é visível para o usuário em qualquer PC moderno. As possíveis diferenças são do nível nano - para micro - segundos e elas acontecem apenas no nível do kernel. Em ambos os casos, o código no nível do usuário é bloqueado pelo kernel do SO.
Does this (if it is true) mean that USB keyboards would be less
responsive than keyboards plugged onto another port type?
Não é verdade por causa da maneira como o SO é projetado. Se o sistema operacional estiver ocupado com algo e estiver "lento", os dois teclados se comportarão de maneira idêntica.
Take for instance a USB keyboard mapped to a medium priority IRQ, on a
faulty system that is stuck on another medium priority interrupt
routine
Neste caso, o sistema irá rotinas de tratamento BSOD, IRQ devem ser concebidos até um determinado padrão (como eles devem ser rápidos, síncronos, sem bloqueio, etc). Qualquer desvio deste e do kernel será BSOD.
Due to its relatively equal priority, keyboard events would be ignored
and you won't be able to send Ctrl-Alt-del or any other emergency
keystroke.
Se o sistema trava, há muitas coisas que 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 se inscreveu para essa notificação, pois o sistema operacional está ocupado fazendo outra coisa.