程序中断:在计算机执行现行程序的过程中,出现某些急需理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
工作流程:
1.中断请求:中断源向CPU发送中断请求信号
2.中断响应:响应中断的条件;中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源。
3.中断处理:中断隐指令。中断服务程序。
陷阱:有意而为之的异常,如系统调用
故障:由错误条件引起的,可能被故障处理程序修复,如缺页
终止:不可恢复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如整数除0
非屏蔽中断:关中断(中断标志位IF=0)时也会被响应
可屏蔽中断:关中断时不会被响应
中断请求标记:每个中断源向CPU发出中断请求的时间是随机的。为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR。当其状态为“1”时,表示中断源有请求。这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。对于外中断,CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号(对于执行时间很长的指令,可在执行过程中设置若干个“查询断点”),以获取的中断请求,也就是说,CPU响应中断的时间是在每条指令执行阶段的结束时刻。
CPU响应中断必须满足以下3个条件:
1.中断源有中断请求。2.CPU允许中断即开中断。3.一条指令执行完毕,且没有更紧迫的任务。
中断判优:既可以用硬件实现,也可用软件实现(硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中;软件实现是通过查询程序实现的)
优先级:1.硬件故障中断属于最高级,其次是软件中断;2.非屏蔽中断优于可屏蔽中断;3.DMA请求优于设备传送的中断请求;4.高速设备优于低速设备;5.输入设备优于输出设备;6.实时设备优于普通设备。
中断处理过程:
1.当前指令执行结束后,pc内容为K+1
2.进入中断服务程序的方法是把该程序第一条指令的地址放入pc
3.回到主程序的方法是把K+1放入pc
4.软件无法完成保存pc的任务,应由硬件实现:中断隐指令
中断隐指令的主要任务:
1.关中断。在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。
2.保存断点。为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器(pc)的内容)保存起来。可以存入堆栈,也可以存入指定单元。
3.引出中断服务程序。实质就是取出中断服务程序的入口地址并传送给程序计数器(pc)。软件查询法;硬件向量法(由硬件产生向量地址再由向量地址找到入口地址)
中断服务程序的主要任务:
1.保护现场:一是保存程序断点(PC),己由中断隐指令完成;二是保存通用寄存器和状态寄存器的内容,由中
断服务程序完成。可以使用堆,也可以使用特定存储单元。
2.中断服务(设备服务):主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲存储器中。
3.恢复现场:通过出栈指令或取数指令把之前保存的信息送回寄存器中。
4.中断返回:通过中断返回指令回到原程序断点处。
单重中断:执行中断服务程序时不响应新的中断请求。
多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。
中断屏蔽技术:主要用于多重中断,CPU要具备多重中断的功能,须满足下列条件。
1.在中断服务程序中提前设置开中断指令。
2.优先级别高的中断源有权中断优先级别低的中断源。
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
屏蔽触发器与屏蔽字
对应每个中断请求触发器就有一个屏蔽触发器,将所有屏蔽触发器组合构成一个屏蔽寄存器,屏蔽寄存器的内容称为屏蔽字。屏蔽字与中断源的优先级别是一一对应的,在中断服务程序中设置适当的屏蔽字,能对优先级别不同的中断源的进行屏蔽例如:1级中断源的请求已被CPU响应,若在其中断服务程序中(通常在开中断指令前)设置一个全“I"的屏蔽字,便可保证在执行1级中断服务程序过程中,CPU不再响应任何一个中断源(包括本级在内)的中断请求,即此刻不能实现多重中断。如果在4级中断源的服务程序中设置一个屏蔽字0001111111,由于第1-3位为0,意味着第1-3级的中断源未被屏蔽,因此在开中断指令后,比第4级中断源级别更高的1、2、3级中断源可以中断4级中断源的中断服务程序,实现多重中断。采用了屏蔽技术后,可以改变CPU处理各中断源的优先等级,从而改变CPU执行程序的轨迹。