中断号

科技工作者之家 2020-11-17

中断是指在CPU运行期间,被CPU内部或外部事件所打断、暂停当前程序的执行而转去执行一段特定的处理内部或外部时间程序的过程。外部设备进行I/O操作时,会随机产生中断请求信号。这个信号中会有特定的标志,使计算机能够判断是哪个设备提出中断请求,这个信号就叫做中断号。

中断概念中断是指CPU在正常运行程序时,由于外部/内部随机事件或由程序预先安排的事件,引起CPU暂时中断正在运行的程序,而转到为外部/内部事件或为预先安排的事件服务的程序中去,服务完毕,再返回去继续执行被暂时中断的程序。

例如,用户使用键盘时,每击一键都发出一个中断信号,通知CPU有“键盘输入”事件发生,要求CPU读人该键的键值,CPU就暂时中止手头的程序,转去处理键值的读取程序,在读取操作完成后,CPU又返回原来的程序继续运行。

可见,中断的发生是事出有因,引起中断的事件就是中断源,中断源各种各样,因而出现多种中断类型。CPU在处理中断事件时必须针对不同中断源的要求给以不同的解决方案,这就需要有一个中断处理程序(中断服务程序)加以解决。

从程序的逻辑关系来看,中断的实质就是程序的转移。中断提供快速转移程序运行环境的机制,获得CPU为其服务的程序段称为中断处理(服务)程序,被暂时中断的程序称为主程序(或调用程序)。程序的转移由微处理器内部事件或外部事件启动,并且一个中断过程包含两次转移,首先是主程序向中断处理(服务)程序转移,然后是中断处理(服务)程序处理完毕之后向主程序转移。由中断源引起程序的转移切换机制,用于快速改变程序运行路径,这对实时处理一些突发事件很有效。1

中断号获取中断号是系统分配给每个中断源的代号,以便识别和处理。中断号在中断处理过程中起到很重要的作用,在采用向量中断方式的中断系统中,CPU必须通过它才可以找到中断服务程序的入口地址,实现程序的转移。为了在中断向量表中查找中断服务程序的入口地址,可由中断号(n)×4得到一个指针,指向中断向量(即中断服务程序的入口地址)存放在中断向量表的位置,从中取出这个地址(CS:IP),装入代码段寄存器CS和指令指针寄存器IP,即转移到了中断服务程序。

CPU对系统中不同类型的中断源,获取它们的中断号的方法是不同的。可屏蔽中断的中断号是在中断响应周期从中断控制器获取的。软中断INT nH的中断号(nil)是由中断指令直接给出的。不可屏蔽中断NMI及CPU内部一些特殊中断的中断号是由系统预先设置好的,如NMI的中断号为02H,非法除数的中断号为0H,等等。1

中断号的使用电脑上需要连接很多设备,如声卡、打印机、Modem等,这些设备可以通过中断请求的方式与CPU进行数据交换。当一个设备需要CPU来处理它的数据时,可以向CPU发出中断请求信号,让CPU暂停正在执行的工作,转而处理该设备的操作请求,处理完毕后,再返回执行原来的工作。当一个设备向CPU发出中断请求时,是通过IRQ值来告知CPU到底是哪一个外围设备需要服务,因此每个设备都会占用一个IRQ值。

在每台电脑的系统中,是由一个中断控制器8259或是8259A的芯片(现在此芯片大都集成到其他的芯片内)来控制系统中每个硬件的中断控制。目前共有16组IRQ,去掉其中用做桥接的一组IRQ,实际上只有15组IRQ可供硬件调用,而这些IRQ都有自己默认的配置。

在使用IRQ值时,需把握一条原则,即一个IRQ值只能给一个设备使用,例如:通常鼠标使用IRQ4(COMl),此时IRQ4就不能再给其他硬件设备使用了。不同的操作系统版本对于IRQ的设置也不尽相同,所以在安装新硬件的时候,系统往往并不能完全自动检测正确的IRQ来分配给所调用的硬件,这就会造成此硬件设备或是原来的旧硬件出现不能正常工作的现象。其实这是系统自动将该硬件的IRQ分配给了其他与此IRQ相同的硬件,从而发生冲突使硬件不能正常工作。一般如果遇到这种情况,只要将新旧两个硬件的IRQ配置手动调开就可以解决了。2

本词条内容贡献者为:

李岳阳 - 副教授 - 江南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。