程序中断

前言 输入输出系统是指我们电脑上的键盘,鼠标,硬盘,打印机等设备。输入输出系统有三种方式向主机之间进行数据传输。
一种是程序查询方式,这种方式要求cpu必须停下手中的工作,不断等待I/O系统的进行。这就好比树懒请求闪电侠送东西。闪电侠处理东西只要1秒钟,而要等待树懒说十分钟的话。
程序中断
文章图片

这显然是一种浪费CPU资源的一种方式。优点是硬件结构简单。
第二种是DMA方式,这在我们上次讲三总线结构的时候说过。DMA传输方式由一个专门的DMA控制器负责。并且通过DMA总线传输,不会干扰其他CPU工作的进行。只有DMA在传输完一大段数据时(如1kb),才像CPU报告工作情况。
程序中断
文章图片

DMA方式适用于磁盘等大批量数据的输入输出系统。
还有一种是中断方式。我们说程序查询方式比较浪费CPU资源,而DMA方式只适用于磁盘等大量数据的I/O设备。所以中断方式应用于键盘鼠标等少量数据的I/O设备。中断方式是在CPU执行现行工作过程中,如果出现键盘输入或者鼠标点击等事件,CPU暂停处理现行程序并保存当前环境(打断点)。然后转而去处理I/O输入,在处理完毕后CPU又自动返回现行程序的断点处,继续执行现行程序。这样使得CPU不必一直等待键盘鼠标的输入输出,提高了CPU的效率。程序查询方式像是监视器模式,而中断方式像是观察者模式。
中断不但应用于I/O设备,也应用于各种程序异常,如地址非法,校验错误,算术溢出错误,除数为0等异常。
指令周期 我们将一条指令执行周期按功能分为不同的部分。
【程序中断】程序中断
文章图片

根据PC的地址从主存中取指令到IR中称为取指周期。
根据指令的地址码从内存中取操作数成为间址周期。
根据指令执行相应的操作(如加减乘除)称为执行周期。
处理中断请求称为中断周期。
程序中断
文章图片

一个指令经历取指周期,间址周期,执行周期,中断周期才能成为一个指令周期。
中断判优 终端系统在任意时刻只能处理一个中断请求。由于多个中断源提出中断请求的时间是随机的,因此当多个中断源同时提出请求时,需要通过中断判优逻辑确定响应那个中断源的请求。例如故障中断的优先级最高,然后是I/O中断。
中断隐指令 CPU相应中断后,经过某些操作,转去处理中断请求。这些操作是由硬件直接实现的,我们将这些操作统一称为中断隐指令。中断隐指令不是一条真正的指令,而是在处理中断前执行的一系列步骤。
中断隐指令过程如下:
1.关中断。在执行中断隐指令时,为了保证不被别的中断程序所打断,执行关中断操作。关中断操作保证不再接受中断请求,从而保证了中断隐指令是一个原子操作。
2.保存断点。为了保证在处理完中断请求后能正确的放回到原来的程序,必须将原来程序的断点保存起来,如保存程序计数器PC的内容。
3.引出中断服务程序。引出中断服务程序的实质是,取出中断服务程序的入口地址并传送到程序计数器PC中。
中断处理过程
程序中断
文章图片

保护现场及屏蔽字。进入中断服务程序后首先要保存现场,现场信息一般是指CPU的一些寄存器的内容。
开中断。允许优先级更高的中断请求,实现中断嵌套。
执行中断服务。
关中断,保证在回复现场和屏蔽字时不被中断。
回复现场和屏蔽字。将现场和屏蔽字回复道原来的状态。
开中断和中断返回。中断服务程序的最后一条指令一般是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序。

    推荐阅读