第六章输入输出系统第六章输入输出系统6.1I/O系统的功能、模型和接口6.2I/O设备和设备控制器6.3中断机构和中断处理程序6.4设备驱动程序6.5与设备无关的I/O软件6.6用户层的I/O软件6.7缓冲区管理6.8磁盘存储器的性能和调度第六章输入输出系统6.1I/O系统的功能、模型和接口6.1.1I/O系统的基本功能1.隐藏物理设备的细节I/O系统必须通过对设备加以适当的抽象,以隐藏物理设备的实现细节,仅向上层进程提供少量的、抽象的读/写命令。2.与设备的无关性方便用户对设备的使用。一方面,用户不仅可以使用抽象的I/O命令,还可使用抽象的逻辑设备名来使用设备;另一方面,可有效提高OS的可移植性和易适应性。第六章输入输出系统6.1.1I/O系统的基本功能3.提高处理机和I/O设备的利用率该功能尽可能让处理机和I/O设备并行操作。处理机应能快速响应用户的I/O请求;减少在每个I/O设备运行时处理机的干预时间。4.对I/O设备进行控制有四种控制方式:①采用轮询的可编程I/O方式;②采用中断的可编程I/O方式;③直接存储器方式;④I/O通道方式。具体采用何种控制方式,与I/O设备的传输速率、传输的数据单位等因素有关。第六章输入输出系统6.1.1I/O系统的基本功能5.确保对设备的正确共享(1)独占设备,进程互斥地访问这类设备,即系统一旦把这类设备分配给某进程后,便由该进程独占,直至用完释放。(2)共享设备,一段时间内允许多个进程同时访问的设备。6.错误处理临时性错误和持久性错误。对于临时性错误,可通过重试操作来纠正;对于持久性错误,向上层报告。第六章输入输出系统6.1.2I/O系统的层次结构和模型I/O软件涉及的面很宽,向下与硬件有密切关系,向上与文件系统、虚拟存储器系统和用户直接交互。1.I/O软件的层次结构:通常把I/O软件组织成四个层次:第六章输入输出系统2.I/O系统中各种模块之间的层次视图第六章输入输出系统6.1.2I/O系统的层次结构和模型2.I/O系统的分层(1)中断处理程序。处于I/O系统的底层,直接与硬件进行交互。当有I/O设备发来中断请求信号时,在中断硬件做了初步处理后,便转向中断处理程序。(2)设备驱动程序。处于I/O系统的次底层,是进程和设备控制器之间的通信程序。将上层发来的抽象I/O请求转换为对I/O设备的具体命令和参数,并把它装入到设备控制器中的命令和参数寄存器中,或者相反。(3)设备独立性软件。I/O软件独立于具体使用的物理设备。第六章输入输出系统6.1.3I/O系统接口1.块设备接口块设备指数据的存取和传输都是以数据块为单位的设备。块设备特征:传输速率较高;可寻址,即能指定数据的输入源地址及输出的目标地址,可随机地读/写磁盘中任一块。将抽象命令映射为低层操作。将上层发来的对文件或设备的打开、读、写和关闭等抽象命令映射为设备能识别的较低层具体操作。隐藏了磁盘的二维结构。块设备接口将磁盘上的所有扇区从0到n-1依次编号,则将磁盘的二维结构改为一种线性序列。块设备管理程序与高层之间的接口。第六章输入输出系统6.1.3I/O系统接口2.流设备接口又称字符设备接口,反映了字符设备的本质特征。字符设备。指数据的存取和传输是以字符为单位的设备,其传输率较低、不可寻址。常采用中断驱动方式。get和put操作。字符设备采取顺序存取方式。通常为字符设备建立一个字符缓冲区,设备的I/O字符流顺序地进入字符缓冲区,或从字符缓冲区顺序地送出到设备。in-control指令。该指令包含了许多参数,每个参数表示一个与具体设备相关的特定功能。第六章输入输出系统6.2I/O设备和设备控制器6.2.1I/O设备1.I/O设备的类型2)按传输速率分类,I/O设备分为三类:低速设备、中速设备、高速设备。I/O设备由执行I/O操作的机械部分和执行控制I/O的电子部件组成。执行I/O操作的机械部分是一般的I/O设备;执行控制I/O的电子部件称为设备控制器或适配器(adapter)。1)按使用特性分类,I/O设备分为存储设备、I/O设备。第六章输入输出系统2.设备与控制器之间的接口控制信号线:设备控制器向I/O设备发送控制信号时的通路,该信号规定了设备要执行的操作。状态信号线:传送指示设备当前状态的信号。缓冲转换器控制逻辑信号数据数据信号线状态信号线控制信号线至设备控制器I/O设备6.2.1I/O设备11.23+第六章输入输出系统6.2.2设备控制器1.设备控制器的基本功能1)接收和识别命令,能接收并识别处理机发来的多种命令。2)数据交换。数据寄存器3)标识和报告设备的状态。状态寄存器4)地址识别。识别控制的每个设备的地址,配置地址译码器5)数据缓冲。在输出时,缓冲区暂存由主机高速传来的数据;在输入时,缓冲区暂存从设备送来的数据。6)差错控制。控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。第六章输入输出系统2.设备控制器的组成图6-4设备控制器的组成数据寄存器控制/状态寄存器数据线I/O逻辑…控制器与设备接口1控制器与设备接口i数据状态控制数据状态控制…地址线控制线CPU与控制器接口控制器与设备接口6.2.2设备控制器11.25?第六章输入输出系统6.2.4I/O通道1.I/O通道设备的引入I/O通道是一种特殊的处理机,它建立了独立的I/O操作,承担了原来由CPU处理的I/O任务。I/O通道具有执行I/O指令的能力,并通过执行通道(I/O)程序来控制I/O操作。I/O通道与一般的处理机不同:一、指令类型单一,主要局限于与I/O操作有关的指令;二、通道没有自己的内存,其所执行的通道程序是放在主机的内存中的。第六章输入输出系统2.通道类型1)字节多路通道(ByteMultiplexorChannel)图6-6字节多路通道的工作原理控制器A控制器B控制器C控制器D控制器N…A1A2A3…子通道AB1B2B3…子通道BC1C2C3…子通道CN1N2N3…子通道NA1B1C1…A2B2C2…设备6.2.4I/O通道第六章输入输出系统2)数组选择通道(BlockSelectorChannel)数组选择通道按数组方式进行数据传送,可以连接多台高速设备。然而,它只含有一个分配型子通道,在一段时间内只能执行一道通道程序,控制一台设备进行数据传送,其利用率很低。6.2.4I/O通道3)数组多路通道(BlockMultiplexorChannel)数组多路通道将数组选择通道传输速率高和字节多路通道相结合,使得各子通道分时并行操作。它含有多个非分配型子通道。第六章输入输出系统3.“瓶颈”问题设备1设备2设备3设备4设备5设备6设备7控制器1控制器2控制器3控制器4通道1通道2存储器6.2.4I/O通道I/O设备控制器1控制器2通道1通道2存储器I/O设备I/O设备I/O设备图6-8多通路I/O系统图6-7单通路I/O系统第六章输入输出系统6.3中断机构和中断处理程序6.3.1中断简介1.中断和陷入中断指CPU对I/O设备发来的中断信号的一种响应。CPU暂停正在执行的程序,保留CPU环境后,自动转去执行该I/O设备的中断处理程序。执行完后,再回到断点,继续执行原来的程序。中断是由外部设备引起的,称外中断;由CPU内部事件所引起的中断,称为内中断或陷入。中断是多道程序得以实现的基础,也是设备管理的基础。第六章输入输出系统6.3.1中断简介2.中断向量表和中断优先级每种设备配以相应的中断服务程序,中断服务程序入口地址的偏移量与段基值构成中断向量。所有中断向量的集合按顺序存放到存储器的某一区域内,这个存储区称为中断向量表。每一个设备的中断请求规定一个中断号。当有多个中断信号源,系统需根据它们规定的中断优先级确定响应。对于多中断信号源的情况,当处理机正在处理一个中断时,又来了一个新的中断请求时,有两种处理方式:屏蔽(禁止)中断与嵌套中断。第六章输入输出系统6.3.2中断处理程序当一个进程请求I/O操作时,该进程将被挂起,直到I/O设备完成I/O操作后,设备控制器便向CPU发送一个中断请求,CPU响应后便转向中断处理程序,执行相应的处理,处理完后解除相应进程的阻塞状态,整个处理过程有以下几个步骤:(1)测定是否有未响应的中断信号;(2)保护被中断进程的CPU环境;(3)转入相应的设备处理程序;(4)中断处理;(5)恢复CPU的现场并退出中断。第六章输入输出系统图6-10中断现场保护示意图PSW程序状态字PC(N+1)程序计数器R0Rn…寄存器……开始返回用户程序中断服务子例程PSWPC(N+1)中断栈TT+M线指针YNN-1R0Rn…第六章输入输出系统图6-11中断处理流程唤醒被阻塞的驱动程序进程对被中断进程的CPU环境进行保护分析中断原因,转入相应的中断处理程序终端中断处理程序打印机中断处理程序磁盘中断处理程序…恢复被中断进程的CPU现场…返回被中断的进程,继续执行中断请求信号第六章输入输出系统6.4设备驱动程序设备驱动程序是I/O系统的高层与设备控制器之间的通信程序,其主要任务是接收上层软件发来的抽象I/O要求,再把它转换为具体要求后,发送给设备控制器,启动设备去执行;反之,它也将由设备控制器发来的信号传送给上层软件。第六章输入输出系统6.4.1设备驱动程序概述1.设备驱动程序的功能(1)接收由与设备无关的软件发来的命令和参数,并将命令中的抽象要求转换为与设备相关的低层操作序列。(2)检查用户I/O请求的合法性,了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置设备的工作方式.(3)发出I/O命令。如果设备空闲,便立即启动I/O设备,完成指定的I/O操作;反之,则将请求者的请求块挂在设备队列上等待。(4)及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。第六章输入输出系统6.4.1设备驱动程序概述2.设备驱动程序的特点(1)驱动程序将进程的I/O请求经过转换后,传送给控制器;把控制器中所记录的设备状态和I/O操作完成情况及时地反映给请求I/O的进程;(2)对不同类型的设备应配置不同的驱动程序;(3)驱动程序与I/O设备所采用的I/O控制方式紧密相关;(4)由于驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言书写;(5)驱动程序应允许可重入。第六章输入输出系统6.4.1设备驱动程序概述3.设备处理方式(1)为每一类设备设置一个进程,专门用于执行这类设备的I/O操作;(2)在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备的I/O操作;(3)不设置专门的设备处理进程,而只为各类设备设置相应的设备驱动程序,供用户或系统进程调用。在不同的操作系统中,所采用的设备处理方式不同:第六章输入输出系统6.4.2设备驱动程序的处理过程设备驱动程序的主要任务是启动指定设备,完成上层指定的I/O工作。其处理过程:(1)将抽象要求转换为具体要求。(2)对服务请求进行校验。驱动程序在启动I/O设备之前,检查用户的I/O请求是不是该设备能够执行的。(3)检查设备的状态。检查设备是否处于就绪状态。(4)传送必要的参数。(5)启动I/O设备。驱动程序向控制器中的命令寄存器传送相应的控制命令。第六章输入输出系统6.4.3对I/O设备的控制方式在处理机向控制器发出一条I/O指令,启动输入设备输入数据时,同时将状态寄存器中的忙/闲busy标志置为1,然后不断循环测试busy。当busy=1时,表示输入机尚未输完一个字,处理机继续对该标志进行测试,直至busy=0,表明输入机已将输入数据送入控制器的数据寄存器中。1.使用轮询的可编程I/O方式在程序I/O方式中,CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费。第六章输入输出系统2.使用中断的可编程I/O方式在I/O设备输入每个数据的过程中,由于无须CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。可见,这样可使CPU和I/O设备都处于忙碌状态,从