CPU在计算机中的任务繁多,虽然设备控制器大大的减少了CPU对I/O的干预设备,但是外设太多时,仍然会使CPU的负担很重。所以增设I/O通道设备的目的,就是为了建立独立的I/O操作,使数据的传送、I/O操作的组织和管理及其结束都能独立于CPU。
I/O通道是使一些原来由CPU处理的I/O任务转由通道来承担,CPU只需要向通道发生一条I/O指令。实际上,I/O通道是一种特殊的处理机,它具有执行I/O指令的能力,并通过执行通道程序来控制I/O操作。不过其所能执行的命令主要局限于I/O操作有关的指令,并且没有自己的内存。
通道通常分为三种类型:字节多路通道,按字节交叉方式工作的通道,通常含有许多非分配型子通道,数量从几十个到数百个,每个子通道连接一个设备。数组选择通道,这种通道实在字节多路通道无法连接高速设备的情况下形成的,但是由于只有一个分配型子通道,所以利用率很低。数组多路通道,是将上述两种通道的优点结合形成的,既有很高的传输速率,又有令人满意的通道利用率。
这里要介绍的是在操作系统中,进程之间的切换方法。中断,既是进程之间切换的方式,又是设备管理的基础。它是指CPU对I/O设备发来的中断信号的一种响应。CPU暂停当前执行的程序,保留CPU环境,自动转去执行该I/O中断处理程序,执行完成后返回断点。由于中断是外部设备引起的,被称为外中断。
还有一种中断是由内部事件引起的,如进程出错、非法指令、地址越界以及电源故障。这类中断被称为内中断或陷入。发现陷入事件后,CPU也会暂停执行程序,保留运行环境,执行陷入事件的陷入程序。陷入与中断的区别主要是信号的来源。
每种设备都具有相应的中断处理程序,然后将程序的入口地址放在中断向量表中,I/O设备发出中断请求,由中断控制器判断该请求,根据该设备的中断号去查找中断向量表,取得入口地址后,转入中断程序执行。实际情况中,经常会有多个设备的中断信号源,不过每个中断对服务要求的紧急程度不同。例如,键盘的中断请求优先级低于打印机,打印机低于磁盘。所以系统就为它们规定了不同的优先级。
那么对多中断源的处理方式有两种,屏蔽中断方式,它会在处理机处理一个中断时屏蔽掉所以的中断,对任何新的中断都不予理睬,而让它们等待。优点是简单易行,但是不能用于实时性较高的中断请求。嵌套中断,当多个中断请求时,CPU会响应优先级最高的中断请求,高优先级的中断可抢占正在运行的优先级的中断。