中断处理过程

中断
在CPU执行程序的过程中,出现了某种紧急情况或异常的事件时,暂停正在执行的程序,转去处理该事件,并在处理完该事件之后返回断点处(指返回主程序时执行的第一条指令的地址)继续执行刚刚被暂停的程序。
中断源
任何引发中断的事件。
中断分类
1)硬件中断(即外中断)
(1)非屏蔽中断(NMI):整个系统只有一个。
(2)可屏蔽中断(INTR)
2)软件中断(内中断)
(1)除法错误中断
(2)溢出中断
(3)单步中断
(4)断点中断
(5)中断指令INT n中断
单步中断和断点中断用来调试程序
中断优先级:8086的中断优先级排序:内中断(除单步中断),NMI,INTR,单步中断。
中断向量表:是存放中断向量(中断服务程序的入口地址)的一个特定的内存区域。这里有必要注意一下,8086可以处理256种中断。
中断处理步骤
(1)中断请求:中断源向CPU发出中断请求
(2)中断响应
(3)保护断点和现场:以便在中断服务程序执行后正确的返回主程序。
(4)中断处理
(5)中断返回
8086中断处理步骤
(1)内部中断以及NMI中断不需要从数据总线上读取中断类型码,而INTR需要,而且该中断类型码由发出中断请求的接口电路提供。
(2)CPU得到中断类型码后将标志寄存器内容压入栈中(PUSHF),保护中断时标志位的状态。
(3)令单步标志TF =0(禁止CPU以单步方式执行中断服务程序)。
(4)令中断允许标志IF=0(即:在响应该中断后不再响应别的中断。由于CPU在中断响应时,自动将IF置为0,如果要允许中断嵌套,必须在后面的中断服务程序中用开中断指令STI重新将IF置为1)
(6)将当前CS:IP入栈,即保护断点和现场。
(7)根据中断类型码在中断向量表中找到相应中断服务程序的入口地址,将其装入CS:IP,转向中断服务程序。
(8)为了保证NMI中弄断有着实质性的优先级,所以在执行中断服务之前需要再次检查是否有NMI中断。
(9)执行中断服务程序。
(10)IRET指令实现原CS:IP,标志寄存器的出栈,即恢复断点并返回到主程序。

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