中断的基本概念
CPU执行程序时,由于发生了某件随机的事件(外部或者内部),引起CPU杂书中断正在运行的程序,转去执行一段特殊的服务程序,以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程被称为中断
打断的事件:中断源
特殊的服务程序:中断服务(处理)子程序
引入中断的原因:
提高对外设请求的相应实时性
提高CPU的利用率
避免了CPU不断检测外设状态的过程
中断类型
内部中断:
异常中断–异常事件引起
软件中断–中断指令引起
外部中断:
可屏蔽中断–INTR中断(CPU可以不响应)
非屏蔽中断–NMI中断
外部可屏蔽中断响应的一般过程
1.中断请求
中断可屏蔽中断请求信号:INTR
中断请求信号应该保持到中断被处理为止
2.中断源识别
软件查询法
中断矢量法:由中断源提供中断类型码,CPU根据类型确定中断源
当有多高中断源同时发生请求
优先级法则
排队法则:先来先服务
中断源判优
中断控制器:根据中断类型码来确定
3.中断响应
外部可屏蔽中断响应信号:#INTA
向中断源发出#INTA中断响应信号
关中断–不允许响应其他中断
保护硬件现场–将FLAGS压入堆栈
保护断点–将CS\IP压入堆栈
以上都是由硬件完成的
中断处理子程序完成的工作
保护软件现场(参数)
开中断(STI)
中断处理
关中断
恢复现场
中断返回
4.中断处理
5.中断返回
执行IRET指令,使IP,CS和FLAGS从堆栈弹出
中断处理过程
中断请求->识别中断源-》关中断-》保护硬件现场–》保护断点-》确定中断服务子程序入口地址-》保护软件现场-》开中断-》软件中断服务程序-》关中断-》恢复软件现场-》恢复断点-》恢复硬件现场-》开中断-》中断返回
中断向量表
存放各类中断的中断服务程序的入口地址
位于内存的00000H~003FFH
每个入口占用4byte,低字为段内偏移,高位位段地址