简短答案
对于用户级代码,两个键盘的性能绝对相同。可能有微小差异(纳米至微米秒现代PC上),如果你写的设备驱动程序。如果系统挂起,则两个键盘都无法解决问题。进行硬重启。
长答案TL; DR;
什么是中断?
当硬件(或某些重要的OS内部软件,例如内核)需要处理器服务时,它将触发一条消息或一个中断,这会要求处理器推迟执行任何操作,并处理此请求。
怎么运行的?
当硬件产生中断(例如按键)时,此请求将进入中断控制器。然后,控制器立即在其机器代码的一行上中断CPU(CPU仍在执行最后一行)。一旦处理器准备好处理该请求,它就会向中断控制器请求中断请求(IRQ)和处理例程。中断控制器具有内部数据结构- 中断调度表,该表包含指向例程的指针,该例程应该由CPU针对特定IRQ执行。
所有不同的中断都对应定义明确的有限中断请求级别(IRQL)。例如,在x86系统上有32个IRQL,而在x64和IA64上实际上较少-16个IRQL。显然,硬件设备和软件服务比IRQL多,这意味着所有某些系统对象将共享IRQL。
x64的IRQLs表
IRQL | 描述
--------------------------------------------
15 | 高/轮廓
14 | 处理器间中断/电源
13 | 时钟
12 | 同步
11 | 设备N
.. | ...
3 | 设备1
2 | 调度/ DPC
1 | 装甲运兵车
0 | 被动/低
较高的IRQL(数字较大)具有较高的优先级。系统的所有组件都尝试将处理器的当前IRQL保持在最低可能的级别上-0。如果发生更高级别的中断,则处理器的当前IRQL级别将升高,并且只有在较低级别的中断才会被处理。更高级别的所有中断都得到解决。如果IRQ调度程序能够将几个相同级别的IRQ排队以便处理器执行,则可以批处理IRQ。
有什么意义?
所有这些都经过精心设计,可以将最终用户与复杂的硬件区分开,并形成可以与多种类型的硬件/软件一起工作的通用体系结构。
用户级代码(即非内核级)仅在处理器处于被动/低(0)IRQL时执行。重点是,只有在处理完所有IRQL之后,您才能在应用程序中处理按键事件。因此,对于键盘,将哪个IRQL分配给硬件中断都没有关系。
IRQL只是OS的抽象,并不是一成不变的。相应的IRQ和IRQL存储在Windows注册表中(例如),任何热心的用户都可以手动更改它们。
结论
问题引语
由于USB键盘依赖于只能访问几个IRQ通道的USB通用驱动程序和体系结构,因此它无法像其他(例如PS2)控制器那样将键盘访问IRQ赋予最高优先级。
也许作者的意思是降低IRQL而不是减少IRQ渠道。无论如何,这并不重要,因为在任何现代PC上用户都看不到它。可能的差异是的纳米至微米秒水平,他们只在内核级别发生。在这两种情况下,操作系统内核都会阻止用户级代码。
这是否(如果是真的)是否意味着USB键盘的响应性不如插入其他端口类型的键盘?
由于操作系统的设计方式,这是不正确的。如果OS忙于某些事情并且“慢”,则两个键盘的行为相同。
例如,在故障系统上的USB键盘映射到中优先级IRQ,该系统卡在另一个中优先级中断例程上
在这种情况下,系统将对BSOD,IRQ处理例程进行设计,使其达到特定标准(例如它们必须是快速,同步,无阻塞的)。任何与此和内核的偏差都会被蓝屏。
由于其优先级相对相等,因此键盘事件将被忽略,您将无法发送Ctrl-Alt-del或任何其他紧急键击。
如果系统挂起,可能会出错很多事情,但是最有可能在驱动程序级别处理按键IRQL。问题是,由于OS忙于做其他事情,它不会传递给订阅了此类通知的应用程序。