一、中断介绍
中断,是指在程序执行过程中,出现了某种紧急事件,CPU暂停执行现行程序,转去执行处理该事件的程序(中断服务程序),执行完再返回到被暂停的程序继续执行,这一过程被称为中断。
中断源
引起中断的设备或事件称为中断源。计算机的中断源可能是某个硬件,也可能是某个软件,常见的中断源有:
- 一般I/O设备发出的中断请求,如键盘、打印机等。
- 数据通道发出的中断请求,如磁盘、光盘等。
- 实时时钟发出的中断请求,如定时器芯片8253的定时输出。
- 硬件故障发出的中断请求,如电源掉电,RAM奇偶校验出错等。
- 软件故障发出的中断请求,如除数为0的除法运算、地址越界、使用非法指令等。
- 软件设置的中断源。如在程序中调用中断指令而产生的的中断。
1.1中断源分类
内中断和外中断。
cpu内部产生的中断、由控制器产生的中断、由程序员安排的中断,称为内部中断
外部中断,由外部设备产生的中断。可分为可屏蔽中断和不可屏蔽中断,可屏蔽中断是指可以延时处理的事件,例如打印机输入输出的中断。如果此时CPU有更重要的事件,打印机的中断请求将会被屏蔽并保存到中断寄存器里边,当屏蔽解除后。仍然能够得到相应和处理。不可屏蔽中断是指事件异常紧急,必须马上处理,例如:掉电。内存奇偶校验错误引起的中断。
CPU提供统一的接口作为中断信号的公共线路,所有来自外设的中断信号都共享公共线路连接到CPU,外部硬件的中断通过两根信号线通知CPU的 两根信号线分别是INTR(INTeRrupt)和NMI(Non Maskable Interrupt),示意图如下 在CPU上运行的程序都是串行的,串行的意思就是所有任务都是一个接一个在CPU上运行的 从INTR引脚收到的中断都是不影响系统运行的,可以随时处理 从NMI引脚收到的中断,那基本上全是硬伤,CPU都没有运行下去的必要了 可屏蔽中断是通过INTR引脚进入CPU的,外部设备如硬盘、网卡等发出的中断都是可屏蔽中断,可屏蔽的意思是此外部设备发出的中断,CPU可以不必理会,因为它不会让系统宕机,所以可以通过eflags寄存器的IF位将所有这些外部设备的中断屏蔽 中断处理程序分为上半部和下半部两部分,把中断处理程序中需要立即执行的部分(分分钟不能耽误的部分)划分到上半部,这部分是要限时执行的,所以通常情况下只完成中断应答或硬件复位等重要紧迫的工作。而中断处理程序中那些不紧急的部分则被推迟到下半部中去完成。由于中断处理程序的上半部是刻不容缓要执行的,所以上半部是在关中断不被打扰的情况下执行的。当上半部执行完成后就把中断打开了,下半部也属于中断处理程序,所以中断处理程序下半部则是在开中断的情况下执行的,如果有新的中断发生,原来这个旧中断的下半部就会被换下 CPU,先执行新的中断处理程序的上半部,等待线程调度机制为旧中断处理程序择一日期(就是指调度算法认为的某个恰当时机)后,再调度其上 CPU 完成其下半部的执行 不可屏蔽中断是通过 NMI 引脚进入 CPU 的,它表示系统中发生了致命的错误,它等同于宣布:计算机的运行到此结束了 CPU收到中断后通过中断向量表或中断描述符表(中断向量表是实模式下的中断处理程序数组,在保护模式下已经被中断描述符表代替)来寻找解决方法 中断发起时,相应的中断向量号通过 NMI 或 INTR引脚被传入 CPU,中断向量号是中断向量表或中断描述符表里中断项的下标,CPU 根据此中断向量号在中断向量表或中断描述符表中检索对应的中断处理程序并去执行。
屏蔽中断与eflags的IF位有关。
该表来源:1.3.2 中断和异常(内中断和外中断、中断处理过程)_BitHachi-CSDN博客_内中断和外中断
补充:内中断包括into中断溢出。对应中断类型04H; 是否可以引发04H中断还与eflags中的OF溢出标志位有关。
二、中断处理过程