为何/proc/irq中的部分IRQ未在/proc/interrupts中显示?
为什么/proc/irq中的部分IRQ编号未出现在/proc/interrupts中?
这是因为/proc/irq和/proc/interrupts的定位与记录逻辑完全不同:
- /proc/interrupts 只记录已经产生过中断请求的IRQ,或是当前被驱动程序注册、处于活跃状态的IRQ。如果某个IRQ从未触发过中断,也没有驱动绑定它,就不会出现在这个文件里。
- /proc/irq 是内核为所有可能被使用的IRQ编号预先创建的目录结构,不管该IRQ是否被实际激活或触发过中断。这些目录用于存储该IRQ的相关配置(比如亲和性设置
smp_affinity),即便IRQ暂时未被使用,内核也会保留这些目录以备后续配置。
以你提到的IRQ 1、2、3为例:
- IRQ1通常对应PS/2键盘控制器,但如果你的系统用的是USB键盘且未加载PS/2相关驱动,这个IRQ就不会被激活,自然不会出现在
/proc/interrupts中,但内核依然会在/proc/irq下保留它的目录。 - IRQ2是传统的级联中断控制器(用于扩展IRQ8-15),现代系统里可能不再使用这个物理IRQ,但内核仍会为其保留目录结构。
- IRQ3一般对应串口设备,若你的系统没有启用或连接串口设备,该IRQ也不会在
/proc/interrupts中出现。
总结一下,/proc/irq是潜在可用IRQ的配置容器,而/proc/interrupts是实际活跃/触发过的IRQ的统计清单,二者的记录范围本身就存在差异。
内容的提问来源于stack exchange,提问作者DrinkaZ
相关产品推荐
相关产品推荐

