1. 中断向量表
中断是一种使CPU挂起正在执行的程序去处理特殊的事件的操作,处理特殊事件的服务程序称为中断程序,即处理中断的程序。
为了便于处理,每一种中断有 一个编号,称为中断号,中断号的取值范围是0到255,如属于内部中断的除法出错的中断号是0,属于外部中断的键盘中断的中断号是9。
中断向量是指中断处理程序的入口地址,相当于执行中断程序的指针。为了使系统在响应中断时,CPU能够快速地转入对应的中断程序,用一张表来保持中断向量,这张表称为中断向量表,中断向量表的每一项也依次编号为0到255。
2. 内部中断
内部中断是CPU在执行某些指令时产生的中断,包括:
- 除法出错中断
- 单步中断
- 断点中断
- 溢出中断
- 中断指令INT n引起的中断。n的取值是0到255,如INT 10H表示调用BIOS显示I/O程序,INT 21H表示调用DOS系统功能等。
3. 外部中断
外部中断是发生在CPU内部某个事件引起的中断,IA-32 CPU有两条外部中断线,INTR和NMI,INTR可屏蔽,NMI不可屏蔽。
鼠标键盘等外设的中断请求通过8259A中断控制器(或者IO APIC和LOCAL APIC)传给CPU,8259A初始化时规定了16个中断请求即IRO至IR15,操作系统在初始化时通过建立中断向量表,并设置8259A或者APIC的相关寄存器实现中断处理程序和中断号的映射&