IRQ(Interrupt Request)的作用就是在我们所用的电脑中,执行硬件中断请求的动作,用来停止其相关硬件的工作状态。比如我们要打印一份文件,在打印结束时就需要由系统对打印机提出相应的中断请求,来以此结束这个打印的操作。
产生中断请求的设备或者事件被称为中断源,中断源可分为两类:一类是CPU内部中断,即执行软件中断指令INT或遇到软件陷阱而产生的中断,它们的中断类型号已由CPU规定好;另一类中断是由CPU以外的I/O设备产生的中断,又称硬件中断,硬件中断可分为不可屏蔽中断NMI和可屏蔽中断INTR,NMI用于紧急情况的故障处理,如RAM奇偶校验错等,INTR则用于外部依靠中断来工作的硬件设备。网卡使用的就是INTR,下面我们对IRQ进行更深入的了解。
一、中断类型号和IRQ
外部设备的中断请求是通过中断控制器8259A的INT引脚输入到CPU的INTR引脚向CPU提出中断申请的,并送去一个中断类型号,这是一个8位的二进制数。
一片8259A能负责整个外部设备的中断请求(1RQ0-IRQ7),每个外设对应一个中断请求号。
图为:中断类型号与中断请求号
二、IRQ的优先级和默认配置
一般计算机只能支持16个IRQ,也就是提供16个硬件设备的中断请求,16个IRQ是用两个8259A通过级联来实现的。
图为:主从8259A连接图
主中断控制器8259A的IRQ2与从中断控制器8259A的INT引脚相连,因此从8259A上的中断请求优先级(Priority)享受主8259AIRQ2上的优先分级。所谓优先级是指当有多个中断源提出中断请求时,CPU先为优先权高的中断请求服务。再为优先权低的中断服务。主8259A中IRQ0~IRQ7中的IRQ0优先权最高,IRQ7最低;从8259A中以IRQ8最高,IRQl5最低。
由于两个8259A的连接关系,从8259A的IRQ8~IRQ15的优先权低于主8259A的IRQ0~IRQl,而高于主8259A的IRQ3~IRQ7。
图为:中断优先级顺序
计算机中有些IRQ有默认的配置,这些默认的配置都是些常用设备,一般的默认配置。
图为:1RQ的默认配置使用情况
现在的Windows操作系统已经运用PNP技术,这种“即插即用”的功能可以将中断进行自动分配,大大简化了用户的操作。不过这种PNP技术也有它的弱点,那就是如果不能认出要安装的新设备,那么自动分配中断时就会产生冲突。我们日常所用的硬件对于IRQ的设置也不尽相同,所以在安装新硬件的时候,系统往往并不能自动检测正确的IRQ来分配给所有调用的硬件,这就会造成此硬件设备或是原来的旧硬件出现不能正常工作的现象。现在新的硬件产品层出不穷,各种产品又相互兼容,功能类似,这就导致了操作系统常常不能正确检测出新设备,中断冲突也就不可避免了。其实这是因为系统自动将该硬件的IRQ分配给了其他与此IRQ相同的硬件上,从而发生冲突使硬件不能正常工作。一般如果遇到这种情况,只要将新旧两个硬件的IRQ配置手动调开就可以解决了。手动配置IRQ时,最好检查有无保留中断(IRQ),不要让其他设备使用该中断号,以免引起新的中断冲突,造成系统死机。另外从表2还可以看出,COM1端口设置为IRQ4,而COM2端口设置为IRQ3,即COM2比COMl中断优先权高,所以为保持通信的传输质量通常将COM2端口接调制解调器,而把COM1留给鼠标使用。利用相同的原理,合理分配各硬件设备的中断号,将使你的系统性能佳。