Коротка відповідь
Обидві клавіатури виконували б абсолютно однаково для коду рівня користувача. Можливі невеликі відмінності ( нано- та мікросекунди на сучасному ПК), якщо ви пишете драйвери пристроїв. Якщо система висить, обидві клавіатури не вирішили б проблему. Перейдіть на жорстку перезавантаження.
Довга відповідь TL; DR;
Що таке перерва?
Коли апаратне забезпечення (або якийсь критичний фрагмент внутрішнього програмного забезпечення ОС, наприклад ядро) вимагає послуги процесора, воно викликає повідомлення або переривання , яке вимагає від процесора відкласти все, що він робить, і обробляє цей запит.
Як це працює?
Коли апаратне забезпечення генерує переривання (наприклад, натискання клавіші), цей запит переходить у контролер переривання. Потім контролер негайно перериває процесор на одному рядку свого машинного коду (процесор все ще виконує цей останній рядок). Як тільки процесор готовий обслуговувати цей запит, він запитує контролер переривання для запиту на переривання (IRQ) та режиму обробки. Контролер переривання має внутрішню структуру даних - Таблиця диспетчера переривань, яка містить вказівник на процедуру, яка повинна бути виконана ЦП для певного IRQ.
Всі різні переривання відповідають чітко визначеному обмеженому рівню запиту на переривання (IRQL). Наприклад, у x86 системах є 32 IRQL, а на x64 та IA64 насправді менше - 16 IRQL. Зрозуміло, що існує більше апаратних пристроїв та програмних сервісів, ніж IRQL, що означає, що всі деякі системні об'єкти поділяться IRQL.
Таблиця IRQL для x64
IRQL | Опис
--------------------------------------------
15 | Високий профіль
14 | Міжпроцесорний перерив / живлення
13 | Годинник
12 | Синхронізація
11 | Пристрій N
.. | ...
3 | Пристрій 1
2 | Відправлення / DPC
1 | APC
0 | Пасивний / низький
Більш високий пріоритет мають вищі IRQL (з більшою кількістю). Усі компоненти системи намагаються підтримувати поточний IRQL процесора на найнижчому можливому рівні - 0. Якщо трапляється переривання більш високого рівня, то поточний рівень IRQL процесора підвищується, а переривання з нижчим рівнем не обробляються, поки всі переривання з більш високими рівнями вирішуються. IRQ може бути оброблена в пакетному режимі, якщо планувальник IRQ може виконати чергу декількох IRQ одного рівня для виконання процесора.
У чому сенс?
Це все було дійсно добре розроблено, щоб відокремити кінцевого споживача від складних апаратних засобів та створити універсальну архітектуру, яка може працювати з багатьма типами апаратного / програмного забезпечення.
Код рівня користувача (тобто не на рівні ядра) виконується лише тоді, коли процесор знаходиться на IRQL Passive / Low (0). Справа в тому, що ви можете обробляти події, натиснуті на клавішу у вашій програмі, лише після обробки всіх IRQL. Тому для клавіатури не має значення, який IRQL призначений для апаратного переривання.
IRQL - це лише абстракції ОС і не встановлені в камені . Відповідні IRQ та IRQL зберігаються в реєстрі Windows (наприклад), і будь-який захоплений користувач може змінити їх вручну.
Висновки
Цитати з питання
Оскільки USB-клавіатури покладаються на загальний USB-драйвер та архітектуру, яка має доступ лише до кількох каналів IRQ, вона не може надати клавіатурі доступ до IRQ настільки високим пріоритетом, як інший (скажімо, PS2) контролер.
Можливо, автор мав на увазі нижчу IRQL замість меншої кількості каналів IRQ . У будь-якому разі це не має особливого значення, оскільки його не видно користувачеві на будь-якому сучасному ПК. Можливі відмінності є нано- та мікросекундними, і вони відбуваються лише на рівні ядра. В обох випадках код рівня користувача блокується ядром ОС.
Чи означає це (якщо це правда), що USB-клавіатури будуть менш чуйними, ніж клавіатури, підключені до іншого типу порту?
Це неправда через те, як створено ОС. Якщо ОС чимось зайнята і працює "повільно", обидві клавіатури поводитимуться однаково.
Візьмемо, наприклад, USB-клавіатуру, зіставлену на IRQ середнього пріоритету, у несправній системі, яка застрягла в іншому рутині переривання середнього пріоритету
У цьому випадку система BSOD, IRQ процедури обробки повинні бути розроблені до певного стандарту (наприклад, вони повинні бути швидкими, синхронними, не блокуючими тощо). Будь-яке відхилення від цього і ядро BSOD.
Через відносно однаковий пріоритет події на клавіатурі будуть ігноруватися, і ви не зможете надіслати Ctrl-Alt-del або будь-який інший екстрений набір клавіш.
Якщо система висить, існує багато речей, які можуть піти не так, але, швидше за все, IRQL натискання клавіш буде оброблено на рівні драйверів. Проблема в тому, що вона не буде доставлена до програми, яка підписалася на таке повідомлення, оскільки ОС зайнята чимось іншим.