在计算机体系结构中,中断是指计算机在执行指令的过程中,由于外部设备或内部程序的请求而中止当前指令的执行,把机器状态转换到另外一种状态,使得处理器能够响应这个请求并处理。而向量,则是一种表示位置、方向、大小及其它属性的数学工具,它在各种计算机领域中应用广泛。所以,中断为什么叫做向量,其实是从向量这种数学工具中应用的概念而来。
在计算机的中断处理过程中,向量被用来标识每个中断服务例程的入口地址。当CPU执行中断指令时,会从向量表中读取相应的中断向量号,根据向量号来获取处理该中断的中断服务例程的入口地址。因此,可以将向量看作是一个指向中断服务例程入口地址的“指针”,它告诉CPU应该跳转到哪里去执行中断服务例程。
在8086微处理器及其后续的x86系列中,向量表被存储在内存的固定位置(0x0000:0x0000~0x0000:0x03FF),包含了256个4字节的中断向量入口地址。每个中断号对应一个中断向量,中断向量的值为中断服务例程的入口地址。向量表的构造方式一般有两种:一种是硬件构造方式,即由硬件自动构造向量表,例如在IBM PC中,系统的中断向量号为0~31的部分向量是固定的,这些中断向量被固定地链接到了一些BIOS函数身上,BIOS中断处理程序的入口地址被存放在相应的向量中;另一种是软件构造方式,即由操作系统或用户程序通过改写向量表的方式,实现自己的系统调用或逆向工程等应用。
向量的优点是它易于扩展和修改,只需要修改向量表中相应的向量即可;同时还可以实现多个设备对同一中断号的共享。但是,向量的缺点也很明显,就是需要占用额外的存储空间,并且向量表存放在内存中,需要访问内存来获取向量号对应的中断服务例程入口地址,会影响中断的响应速度。另外,在进行中断处理时,需要额外的指令来读取向量值并跳转到相应的地址,这些额外的指令也会影响中断响应的速度。