2022-07-02 电脑系统网
中断处理的整个过程是中断源发出中断请求开始,CPU响应这一要求,现行程序被中断,直到中断服务程序完成,CPU回到原程序继续执行的整个过程。那么具体的中断处理过程是什么呢?让我们带你去看看!
中断处理过程的五个阶段
中断处理的基本过程包括中断请求、中断判断、中断响应、中断服务 中断返回等五个阶段。
1.中断请求阶段
1)发生在CPU内部中断(内部中断)不需要中断请求,CPU直接接收内部中断控制逻辑。
2)中断源提出外部中断请求。利用外部中断源CPU中断输入引脚 输入中断请求信号。CPU输入引脚有两个中断要求:可屏蔽中断要求输入引脚和不可屏蔽中断要求输入引脚。
1.请求触发器中断
每个中断源中断请求信号的时间不确定,CPU当响应中断时 不确定。因此,每个中断源都有一个中断请求触发器,锁定自己的中断请求信号,并保持到CPU只有在响应中断请求后才能清除。
1.允许触发器中断
在CPU当它是1时,内部有一个中断允许触发器CPU响应中断称为开中断。如果是0,则不允许CPU中断,中断被屏蔽,称为关中断。
通常%%,当CPU中断允许触发器复位为0,即关闭中断。 CPU中断响应时,CPU禁止接受另一个新的中断。
%中断允许触发器的状态可以用开中断或关中断指令来设置。
2.中断判断阶段
CPU当多个中断源同时向方向时,只能接受一个中断源的请求一次CPU提出中断请求时,CPU必须找出中断优先级最高的中断源,称为中断判断优。
硬件法或软件法可用于中断判断。
2.1软件判优
CPU检测中断请求后,首先阅读中断请求寄存器的内容,逐个检测其状态,检测1,确定相应的中断源有中断请求,并转移到其中断服务程序。
先检测哪一个,哪一个优先级高,测哪个,哪个优先级低,检测顺序是各中断源的优先级。
假设上图中输入端口地址为87FFH。查询程序如下:
MOV DX,87FFH
IN AL,DX ;读中断请求寄存器内容
SHR AL,1
JC IR0 ;IRQ0有请求,转IR0
SHR AL,1
JC IR1 ;IRQ1有请求,转IR1
SHR AL,1
JC IR2 ;IRQ2有请求,转IR2
… …
判断软件需要很长时间。若中断源较多,中断实时性较差,但软件判断优先安排灵活。
2.2硬件判优
中断源的优先级有两种常见的方法:菊花链判断电路和中断控制器判断。
2.2.菊花链判断电路
设计理念:每个中断源都有一个中断逻辑电路,所有中断逻辑电路都形成一个像菊花链一样的链。链前端的中断源优先级最高,设备优先级越低。
实现过程: CPU如果允许中断,收到中断请求,CPU发出中断响应信号。中断响应信号首先到达菊花链的前端。如果中断源1提出中断请求,它将拦截中断响应信号并封锁它,以防止它传输到下一个中断源。无论以下中断源是否提出中断请求,都不可能接收中断响应信号,因此其中断请求不能响应。
2.2.2中断控制器判断
例如,中断控制器Intel8259A,中断源的中断优先级可以通过多种方式设置。中断控制器中有一个中断优先级判别器,它自动识别当前提出中断要求的最高中断源,并将其中断向量码发送到数据总线,CPU接收中断向量码并找到其中断服务程序。
3.中断响应阶段
中断判断后,中断处理进入中断响应阶段。中断响应时,CPU同时,向中断源发出中断响应信号:
① 保护硬件现场;
② 关中断;
③ 保护断点;
④ 获取中断服务程序的入口地址。
4.中断服务阶段
中断服务程序的一般结构如下:
1)保护现场。在中断服务程序的开始部分,安排几个入栈指令,将每个寄存器的内容压入堆栈。
2)打开中断。在中断服务程序执行过程中,允许更高级别的中断请求中断现状 中断服务程序,实现中断嵌套。
3)中断服务。完成中断源的具体要求。
4)恢复现场。在中断服务程序结束之前,主程序的中断现场必须恢复。通常,将存储在堆栈中的现场信息弹出到原始存储器中。
5)中断返回。返回原程序的断点,继续执行原程序。
5.中断返回阶段
返回原程序的断点,恢复硬件现场,继续执行原程序。
中断返回操作是中断响应操作的逆过程。