这里以IRQ0(时钟中断)为例说一下保护模式下的中断响应过程,我们假定中断响应过程中不会有错误出现,于是忽略一些检测过程:
1.当产生一个IRQ0,首先由中断屏蔽寄存器IMR中的数据(由写入的OCW1决定)判断是否响应该中断,另外还会判断EOI,如果EOI为0,也不会响应中断;
2.如果步骤1中的判断都是响应,那么中断向量号经由INTR传到CPU(这里中断向量号为20H,可通过向主8259A,端口21H写入ICW2设置IRQ0的中断向量号);
3.CPU接收到中断请求后,根据IF位判断是否响应中断,如果响应,那么CPU会将EOI置0,将IF置0;
4.CPU从中断描述符表寄存器IDTR中获取中断描述表IDT基地址,并根据中断向量号取得响应的中断门描述符(中断向量号乘以8H就是要找的描述符在IDT中的偏移,这里是20H*8H),然后从中断门描述符中取得中断处理程序的选择子和偏移,转移到中断处理程序;
5.中断处理程序返回的时候,CPU自动将IF标志置1,EOI视情况而定,本例中需要手动将其置1;
6.中断处理结束。由上可知在中断响应过程中,CPU不会响应其他的中断。