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