中断处理的详细过程

这里以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不会响应其他的中断。

你可能感兴趣的:(操作系统)