简介
通道有效中断即I/O通道向处理机发出的中断请求。在计算机中,中断一般分为软件中断和硬件中断。I/O通道中断属于硬件中断。I/O通道中断的优先级较高,处理机一般会优先处理。中断处理过程为以下几个步骤:唤醒被阻塞的驱动(程序)进程、保护被中断进程的 CPU 环境、转入相应的设备处理程序、中断处理、恢复被中断进程的现场。
中断处理步骤中断处理层的主要工作有:进行进程上下文的切换,对处理中断信号源进行测试,读取设备状态和修改进程状态等。由于中断处理与硬件紧密相关,对用户及用户程序而言,应该尽量加以屏蔽,故应该放在操作系统的底层进行中断处理,系统的其余部分尽可能少地与之发生联系。当一个进程请求 I/O 操作时,该进程将被挂起,直到 I/O 设备完成 I/O 操作后,设备控制器便向 CPU 发送一中断请求,CPU 响应后便转向中断处理程序,中断处理程序执行相应的处理,处理完后解除相应进程的阻塞状态。对于为每一类设备设置一个I/O进程的设备处理方式,其中断处理程序的处理过程分成以下几个步骤。
唤醒被阻塞的驱动(程序)进程当中断处理程序开始执行时,首先去唤醒处于阻塞状态的驱动(程序)进程。如果是采用了信号量机制,则可通过执行 signal 操作,将处于阻塞状态的驱动(程序)进程唤醒;在采用信号机制时,将发送一信号给阻塞进程。
保护被中断进程的 CPU 环境通常由硬件自动将处理机状态字 PSW 和程序计数器(PC)中的内容,保存在中断保留区(栈)中,然后把被中断进程的 CPU 现场信息(即包括所有的 CPU 寄存器,如通用寄存器、段寄存器等内容)都压入中断栈中,因为在中
断处理时可能会用到这些寄存器。图 给出了一个简单的保护中断现场的示意图。该程序是指令在 N 位置时被中断的,程序计数器中的内容为 N+1,所有寄存器的内容都被保留在栈中。
转入相应的设备处理程序由处理机对各个中断源进行测试, 以确定引起本次中断的 I/O 设备, 并发送一应答信号给发出中断请求的进程,使之消除该中断请求信号,然后将相应的设备中断处理程序的入口地址装入到程序计数器中,使处理机转向中断处理程序。
中断处理对于不同的设备,有不同的中断处理程序。该程序首先从设备控制器中读出设备状态,以判别本次中断是正常完成中断,还是异常结束中断。若是前者,中断程序便进行结束处理;若还有命令,可再向控制器发送新的命令,进行新一轮的数据传送。若是异常结束中断,则根据发生异常的原因做相应的处理。1
恢复被中断进程的现场当中断处理完成以后,便可将保存在中断栈中的被中断进程的现场信息取出,并装入到相应的寄存器中, 其中包括该程序下一次要执行的指令的地址 N+1、 处理机状态字 PSW,以及各通用寄存器和段寄存器的内容。这样,当处理机再执行本程序时,便从 N+1 处开始,最终返回到被中断的程序。
I/O 操作完成后,驱动程序必须检查本次 I/O 操作中是否发生了错误,并向上层软件报告,最终向调用者报告本次 I/O 的执行情况。除了上述的第 4 步外,其它各步骤对所有 I/O设备都是相同的,因而对于某种操作系统,例如 UNIX 系统,是把这些共同的部分集中起来,形成中断总控程序。每当要进行中断处理时,都要首先进入中断总控程序。而对于第 4 步,则对不同设备须采用不同的设备中断处理程序继续执行。图示出了中断处理流程。
I/O通道I/O通道是一种特殊的处理机,它具有执行 I/O 指令的能力,并通过执行通道(I/O)程序来控制 I/O 操作。 但 I/O 通道又与一般的处理机不同, 主要表现在以下两个方面:一是其指令类型单一, 这是由于通道硬件比较简单, 其所能执行的命令主要局限于与 I/O 操作有关的指令;二是通道没有自己的内存,通道所执行的通道程序是放在主机的内存中的,换言之,是通道与 CPU 共享内存。1
中断在计算机科学中,中断(Interrupt)是指处理器接收到来自硬件或软件的信号,提示发生了某个事件,应该被注意,这种情况就称为中断。
通常,在接收到来自外围硬件(相对于中央处理器和内存)的异步信号,或来自软件的同步信号之后,处理器将会进行相应的硬件/软件处理。发出这样的信号称为进行中断请求(interrupt request,IRQ)。硬件中断导致处理器通过一个运行信息切换(context switch)来保存执行状态(以程序计数器和程序状态字等寄存器信息为主);软件中断则通常作为CPU指令集中的一个指令,以可编程的方式直接指示这种运行信息切换,并将处理导向一段中断处理代码。中断在计算机多任务处理,尤其是即时系统中尤为有用。这样的系统,包括运行于其上的操作系统,也被称为“中断驱动的”(interrupt-driven)。