CPU在传输数据之前,首先要查询外部设备是否处于“就绪”状态。对于输入操作,需要知道外围设备是否已经准备好要输入的数据;对于输出操作,需要知道外围设备是否已经处理完CPU上次输出的数据。只有查询确定外围设备处于“就绪”状态,CPU才能发出指令访问外围设备,实现数据交换。查询方式的优点是通用性强,可以用于各种外部设备与CPU之间的数据传输。缺点是需要有一个等待查询的过程,在等待查询期间CPU不能进行其他操作,导致工作效率低下。与查询方式不同的是,中断方式是外围设备主动提出数据传输的请求,在收到这个请求之前,CPU一直在执行主程序,只有收到外围设备发送数据的请求后,才中断原主程序的执行,暂时与外围设备进行数据交换,数据交换完成后,立即返回继续执行主程序。 中断方式彻底消除了查询方式中CPU的等待现象,大大提高了CPU的工作效率。中断方式的一个重要应用领域是实时控制,通过中断方式把现场采集的数据及时传送给CPU,经过处理后可以立即做出反应,实现实时控制。而使用查询方式很难做到及时采集和实时控制。由于中断方式能有效提高CPU的工作效率,适用于实时控制系统,因此较为常用。
以上就是中断在CPU和外部设备之间交换数据的作用。其实,每当有两件事需要同时处理,但又不可能准确知道这两件事发生的时间(两件事件发生的时间没有关联),也就是需要处理“异步”事件的时候,就会用到中断的概念。当CPU正在执行程序处理某件事的时候,外部的事件(如电平变化、脉冲边沿跳变、定时器/计数器溢出等)要求CPU立即处理。CPU就暂时停止当前程序,转而执行程序去处理发生的事件。处理完事件之后,就回到原来程序被中断的地方,继续执行原来的程序。这种程序在执行过程中因为外部原因被暂时中断的情况就叫做“中断”。与汇编指令中的转移指令相比,中断是通过硬件来改变CPU操作的方向的。从面向任务