中断和异常的作用是指示系统中的某个地方发生一些事件, 需要引起处理器(包括正在执行中的程序和任务)的注意. 当中断和异常发生时, 典型的结果是迫使处理器将控制从当前正在执行的程序或任务转移到另一个历程或任务中去. 该例程叫做中断处理程序, 或者异常处理程序. 如果是一个任务, 则发生任务切换.

中断包括硬件中断和软中断.

硬件中断是由外围硬件设备发出的中断信号引发的, 以请求处理器提供服务. 当I/O接口发出中断请求时, 会被像8259A和I/O APIC这样的中断控制器收集, 并发送到处理器. 硬件中断完全是随机产生的, 与处理器的执行并不同步. 当中断发生时, 处理器要先执行完当前的指令, 然后才对中断进行处理。

软中断是由 int n 指令引发的中断处理, n是中断号或者叫类型码.

中断处理程序是运行在ring0层的,这就意味着中断处理程序拥有着系统的全部权限。Intel设置了一个叫做中断描述符表(IDT, Interrupt Descriptor Table)的东西,和段描述符表一样放置在主存中,类似地,也有一个中断描述符表寄存器(IDTR)记录这个表的起始地址。

img

这是0号到19号中断,20~31号中断Intel保留了,32~255号中断留给了用户去定义和使用。在Linux系统下我们可以查阅当前的中断定义和映射表,方法是查看/proc/interrupts 文件即可