2009年6月5日 星期五

IRQ and INT

IRQ 指的是 HW 連接至 PIC 上的 pin number
INT 指的是 interrupt vector 的 number


"软中断一般是指由指令int引起的“伪”中断动作——给CPU制造一个中断的假象;而硬中断则是实实在在由8259的连线触发的中断。因此,严格的讲,int与IRQ毫无关系,但二者均与中断向量有关系。int引起的中断,CPU是从指令中取得中断向量号;而IRQ引起的中断,CPU必须从数据线上取回中断号(硬件引发中断首先加到8259的某个IRQ引脚上,8259根据定义好的规则换算出相应的中断向量号,将其放在数据线上,然后通知CPU中断到来)。接下来CPU的工作就一样了:保护现场、根据中断号得到中断处理程序地址、执行中断处理、恢复现场继续执行被中断的指令。Windows驱动程序一般不能直接接管中断,中断是由内核的VPICD接管,驱动程序只是向VPICD注册中断服务,中断服务将由VPICD调用。这样可以有效的实现虚拟设备:虚拟不存在的设备或者改变已存在的物理设备的行为。"

-- from http://topic.csdn.net/t/20011227/16/445451.html#