程序员考试考前串讲:中断工作方式
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
1、中断工作方式
中断并不只用于输入/输出系统中,中断系统是计算机的基本结构,中断系统的出现,是现代计算机功能强大的标志。顾名思义,中断就是打断中央处理器正在执行的工作,让中央处理器去处理其他更加重要或者更为紧迫的任务。发起中断的事务称为中断源,中断源包括I/O设备、实时时钟、故障源、软件中断等。中断系统使得中央处理器摆脱了只能按照指令顺序执行的束缚,让计算在并行性、分时操作、故障处理等方面更加强大。
2.中断的分类
按照中断源来区分中断,可以分为内部中断和外部中断。内部中断是中央处理器内部产生的中断,在个人计算机中,内部中断又分为溢出中断、除法错中断、断点中断、软中断及单步中断,其中可以使用软件中断实现操作系统功能调用和基本BIOS调用,也可以使用单步中断实现程序的调试,与内部中断相对应的是外部中断,中断源来自于中央处理器之外。而外部中断按照中央处理器的响应可以分为可屏蔽中断和非屏蔽中断。非屏蔽中断是中央处理器一定要响应的中断,通常是计算机发生了紧急情况,如掉电等。可屏蔽中断大多数是外设和时钟中断,在计算机处理一些不应该打断的任务时,可以通过屏蔽位来禁止响应这些中断。
3.中断的步骤
在I/O控制中引入中断,是为了解决程序控制方法中CPU低效等待的缺陷。采用该机制,它将无须定期查询I/O系统的状态,而可以抽身处理其他途径。当I/O系统完成后,则以中断信号通知CPU,之后CPU保存正在执行程序的现场(包括程序计数器PC,记住执行到哪个指令),然后转入I/O中断服务程序完成数据交换。而收到中断请求后,停止正在执行的代码,保存现场的时间称之为中断响应时间,这个时间应该尽可能地短。
具体来说,中断响应可以分为以下几个步骤:
(1)保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。
(2)寻找中断入口,根据不同的中断源所产生的中断,查找不同的入口地址。以上工作是由计算机自动完成的,与编程者无关。
(3)执行中断处理程序。
(4)中断返回:执行完中断指令后,就从中断处返回到主程序,继续执行。
4.中断的判断
在系统中有多个中断源时,常见的处理方法包括如下所示:
(1)多中断信号线法:就是给每个中断源"拉一根电话线",做到专线专用。
(2)中断软件查询法:CPU收到中断后转到中断服务程序,由该程序来确认中断源。
(3)雏菊链法:也称为硬件查询法,所有的I/O模块共享一条共同的中断请求线。
(4)总线仲裁法:一个I/O设备在发出中断请求前,必须先获得总线控制权。由总线仲裁机制来决定谁有权发出中断信号。
(5)中断向量表法:中断向量表用来保存各个中断源的中断服务程序的入口地址,当外设发出中断后,由中断控制器确定其中继号。
关中断仅仅是用于控制可屏蔽中断,而对于软件中断、CPU内部产生的中断和非屏蔽中断来说,它们并不受关中断的控制,关中断并不影响这些中断。故在关中断的状态下,不能响应可屏蔽中断。