中断是什么
中断是指CPU在执行程序的过程当中,如果发生意外时间或者特殊事件(如异常),CPU要中断当前的程序的处理或者当前程序的执行,转而去处理这个特殊事件,或者是异常事件,通过执行中断服务程序的方式来进行处理,处理结束之后,要返回到被中断的程序的程序断电继续去执行原来的程序,这个过程就叫中断.
程序查询方式
程序查询方式是CPU和I/O设备串行工作的一种方式.
程序查询方式的基本思路为,当CPU在执行某个程序时,若遇到程序中要求使用I/O设备的指令,那么CPU便开始向I/O设备发送读/写指令,指令发出后CPU读取I/O状态,若I/O设备准备就绪,那么CPU从I/O设备中读取一个字节或字到CPU中,之后CPU再写入到主存中(因为程序运行时的数据存放在主存),这时CPU检查对I/O设备的访问是否完成,如若是,CPU继续执行原有程序,若不是,CPU继续重复发出读写指令.若I/O设备未准备就绪,那么CPU将已知进行读取I/O设备状态的指令,而不执行其他指令,这将导致CPU处于踏步等待的状态,即CPU在这段时间无法进行任何其他工作,对于这种方式,CPU大部分时间在查询等待I/O设备.
优点:电路设计简单
缺点:CPU效率低
其流程图如下:
程序中断方式
程序中断方式是一种CPU和I/O设备并行工作的方式.
其思路为,当CPU执行的程序需要访问I/O设备时,CPU发出启动I/O指令之后,CPU与外部I/O设备并行工作,CPU继续执行原有程序,外部设备开始准备数据,一段时间后,I/O设备准备好了数据,此时将通过I/O接口向CPU发送一个中断请求,CPU收到这个中断请求后,如果CPU当前可以相应这个中断,在某一条指令的执行周期结束之前,CPU可以相应这个中断,打断CPU当前执行的程序,去执行一个中断服务程序,这个中断服务函数将会完成数据的输入和输出操作,中断程序执行完后CPU会继续执行被中断的程序.
这种方式把CPU逐渐的从数据传输工作当中独立出来,使得I/O设备的自治能力越来越强.
优点:没有踏步等待现象,CPU被解放
缺点:需要中断现行程序,CPU需要保存现场,这是额外的开销,且之后还要恢复现场,CPU额外开销较大
流程图如下:
DMA方式
DMA方式是CPU和I/O设备并行工作的一种方式.
这种方式在主存与I/O设备之间直接建立一条数据通道,因此主存与I/O设备通过DMA控制器可以直接进行数据的交换.
其流程为,CPU执行当前程序时,若遇到需要访问I/O设备,那么CPU启动I/O设备,I/O进行数据的准备,CPU继续执行当前程序,外部设备数据准备结束之后,会窃取一个或几个的存储周期,在这些存储周期当中,外部设备和内存在DMA控制器的控制之下,完成一个或几个字的数据交换,交换结束之后CPU继续执行程序.
特别注意:虽然CPU将总线控制权转交给了DMA,但是CPU依旧可以继续执行主程序,只是在这种情况之下,CPU不能使用系统总线,不能访问内存.
优点:与程序中断方式相比,在数据传送过程当中,不需要保存现场,不需要恢复现场.不需要去执行中断服务程序,不需要用软件完成数据输入输出的控制,进一步把CPU与I/O之间的数据传送解放了出来
流程图如下.