第二节 设备的启动和I/O中断处理
作业执行过程中总要不断地启动外围设备,把输入信息读入内存进行处理,或者把加工结果信息输出到存储介质上保存。人们将计算机中内存和外围设备之间信息的传输称为输入输出操作 ,简称为I/O操作。
文件管理实现“按名存取”功能,实现将文件信息保存于存储介质上,或从存储介质上读取文件信息。但只有把存储介质装到相应外围设备上且启动外围设备工作才能完成I/O操作,所以必须考虑设备的启动和I/O中断处理。
一、通道
计算机中引入自成独立系统的通道结构后,内存和外围设备之间
传输信息的I/O操作就委托通道去做。只要中央处理器启动了通道,通道就能按指定的要求(通道程序)独立地完成I/O操作。CPU就可去做其他工作,从而实现CPU和通道及外围设备并行工作的能力。通道也称输入输出处理机。
具有通道装置的计算机系统,中央处理器 、内存 、通道、控制器、外围设备之间的连接如下图5.3所示。
通常,中央处理器可以连接多个通道,一个通道可以连接多个控制器,一个控制器可以连接多个外围设备。有的系统还将一台外围设备连接到几个控制器上或把一个控制器连接到多个通道上,实现多路交叉连接。
二、外围设备的启动
1.通道程序
中央处理器执行“启动I/O”指令启动通道工作,通道被启动后执行事先编制好的由通道命令组成的通道程序来控制设备工作。通道命令又称为通道命令字(CCW,Channel Command Word),每一条通道命令规定了设备的某一种操作,整个通道程序就确定了设备应执行的操作和操作顺序。通道程序是存放在内存中的,为了使通道能够正确快速地找到通道程序的起始地址,系统在内存中安排了一个固定的单元,用来存放通道程序的起始地址,这个固定的单元称为通道地址字(CA
W,Channel Address Word)。通道被启动后,控制指定的设备完成规定的操作,同时记录通道与设备执行情况,为此系统在内存中安排另一个固定单元,用于存放这些被记录状态,这个固定的单元称为通道状态字(CSW,Channel Status Word)。
通道命令的格式一般由命令码、数据内存地址、传送字节个数、标志码等组成。例如,IBM系统通道命令用8个字节表示,其格式如下:
其中各段含义为:
①命令码规定了外围设备所执行的操作。命令码分成三类:数据传输类(读、反读、写、取状态),通道转移类(转移),设备控制类(随设备不同而异)。数据传输类命令要求外围设备执行数据传输。通道转移类命令要求通道执行转移命令,就像中央处理器执行一条转移指令一样,它指出下一条执行的通道命令地址。设备控制类命令要求外围设备执行某种辅助操作,如磁带反绕、打印走纸、磁盘搜索、查找等。
②非通道转移命令中,数据主存地址规定了本通道命令进行数据传送的主存起始地址 ,而传送字节个数 指出这个主存区域的大小 。对于“ 读 ”通道命令 ,这个区域用来存放从外围设备读入的信息;对于“ 写 ”通道命令,这个区域用来存放输出到外围设备的信息;对于设备控制类通道命令,这个区域用来存放从外围设备取出的或送给外围设备的控制信息。通道转移命令是用来指定转移地址。
③标志码是通道程序的链接标志,当标志码非“0”时,表示通道程序尚未结束,还有后继的通道命令要执行。当标志码为“0”时,表示本条通道命令是通道程序的最后一条命令,执行完本条命令后,通道程序就结束。
④传送字节个数 。对数据传送类命令 ,表示本命令应传送的字节个数,通道执行该命令时,每传送一个字节就把传送字节个数减1,当传送字节个数为“0”时,表示该命令执行结束。由于通道执行命令时总是先检查传送字节个数是否为“0”,若为“0”,就认为该命令执行结束,如果有后继命令,则继续执行下一条命令,因此,对非传送类命令,也要把传送字节个数填上一个非“0”数。
下面举例说明通道程序的设计。
例 用户要求从打印机上输出一行信息:“Operating System”,这行要打印在新的一页第4行的位置 。假定该用户所要求输出的信息“Operating System”存放在内存的L单元开始的区域中,连空格在内共16个字符。为此,我们可组织-个通道程序如下:
主存地址 命令码 数据主存地址 标志码 传递字节个数 K07 000000 60 0001 K+8EF 000000 60 0001 K+16F9 L 00 0010 其中,命令码07表示“对折页线”(即走纸到新的一页开始),命令码EF表示“走纸3行”(即走纸到第4行的位置),命令码F9表示“打印一行信息” 。标志码60表示有后继命令 。最后一条命令要求从L单元开始的16个字符 ,命令中标志码为“0”,表示控制打印机的操作结束。
系统使用CCW,CAW,CSW实现中央处理器和通道的通讯工作,CCW用于告诉通道,中央处理器希望通道“做什么”,CAW用于告诉通道这个任务信息的地址,CSW用于通道向CPU报告I/O操作执行的状况,以便CPU决定下步怎么处理。
2.外围设备的启动
一般,操作系统启动和控制外围设备,完成输入输出操作的过程
如下:
①文件系统或设备管理按启动外围设备的工作要求组织好通道程序,并且把通道程序的首地址放入到通道地址字CAW中。
②中央处理器执行“启动I/O”指令,指定的通道向中央处理器作出回答:能接受命令或拒绝接受命令。如果通道接受了命令,则表示通道启动成功,通道即开始控制外围设备输入输出操作(当然从CAW中取通道程序首地址),而中央处理器可转去执行其他程序。
③当通道完成输入输出操作后,向中央处理器发中断信号汇报命令执行情况 。由于通道和设备执行操作的情况巳经在通道状态字CSW中,所以一般由通道产生I/O中断,将中断的通道与设备记载到寄存器中,中央处理器响应中断后,操作系统分析特定寄存器和CSW中的内容并做相应地处理。
第一个过程是准备阶段,文件系统或设备管理把启动外围设备的工作要求组织成通道程序中的通道命令,控制设备实现输入输出操作。
第二个过程是中央处理器执行“启动I/O”指令,“启动I/O”指令中必须指出欲启动的通道号和设备号。“启动I/O”指令执行后,指定的通道根据通道和连接在通道上的设备工作情况用条件码向中央处理器作出回答:是否接受命令。如果接受则表示启动成功,通道执行指定I/O操作,CPU可以去做其他工作,即通道和中央处理器并行工作;否则,则推迟相应的I/O操作的执行 ,待适当的时候重新执行“启动I/O”指令。
第三个过程是通道向中央处理器汇报命令执行情况。当通道接受了中央处理器的命令后,控制指定的设备完成通道命令规定的操作,并把通道和设备执行操作的情况随时记录下来,把执行的情况汇集在通道状态字CSW中 。当通道发现通道状态字中有控制器结束、设备结束、通道结束、设备出错、设备特殊等情况时,就形成I/O中断。把产生的中断的通道号、设备号存入特定的寄存器,中央处理器响应中断后,操作系统分析特定寄存器和通道状态字内容可知程序执行情况而作出相应处理。
可见,具有通道结构的计算机系统,从启动外围设备直到完成输入输出操作,不须要考虑不同类型设备所具有的物理特性,都用统一的方法在进行处理,即简单又不容易出错。这种不考虑外围设备具体特性(实际上设备物理特性隐含在通道程序中)的处理方法称“设备处理的一致性”。
三、I/O中断事件的处理
I/O中断是通道和中央处理器协调工作的一种手段。通道借助I/O中断请求中央处理器进行干预,中央处理器根据产生的I/O中断事件了解输入输出操作的执行情况并作相应处理。
1.操作正常结束
当通道状态字中有通道结束、设备结束、控制器结束时表示完成了通道程序所规定的操作,CPU启动的本次I/O操作正常结束。
操作系统响应中断后,根据产生中断的通道号和设备号查设备分配表可知是哪个作业进程要求本次I/O操作的,现已完成传输工作,应使该进程从“等待传送”状态改为“就绪”。
2.操作异常结束
当输入输出操作执行时,如果发现有硬件的故障,如接口错、控制错、通道程序错、或数码校验错等情况时,表示通道或设备出现了故障。有时在I/O执行过程中也会出现一些设备特殊事件,例如打印纸用完了,磁带空间不够等。通道对此都要产生操作异常结束中断。
系统对操作异常结束中断处理是区分故障还是设备特殊事件。对故障中断,可以组织程序重执。例如当读出的数据错,那么操作系统可重新启动原来的通道命令进行重读,也许故障排除。经过若干次重执后,仍不能排除故障时,则输出出错信息,请操作员人工处理。
对设备特殊事件中断,操作系统分析发生的特殊事件,分别进行处理。例如对上述两类事件,输出一些提示信息请操作员装打印纸或换新磁带。当操作员排除了故障或处理完设备特殊事件后,应打入一条命令通知操作系统,操作系统继续控制这个程序的执行。