第五章设备管理.ppt
第五章第五章 设备管理设备管理5.1 I/O5.1 I/O系统系统5.2 I/O5.2 I/O控制方式控制方式5.3 5.3 缓冲管理缓冲管理5.4 5.4 设备分配设备分配5.5 5.5 设备处理设备处理5.6 5.6 磁盘存储器管理磁盘存储器管理设备管理的目标和任务1.按照用户的请求,控制设备的各种操作,完成I/O设备与内存之间的数据交换(包括设备分配与回收;设备驱动程序;设备中断处理;缓冲区管理),最终完成用户的I/O请求2.向用户提供使用外部设备的方便接口,使用户摆脱繁琐的编程负担逻辑设备与物理设备、屏蔽硬件细节(设备的物理细节,错误处理,不同I/O的差异性)3.充分利用各种技术(通道,中断,缓冲等)提高CPU与设备、设备与设备之间的并行工作能力,充分利用资源,提高资源利用率(并行性、均衡性)设备管理的目标和任务(续)4.保证在多道程序环境下,当多个进程竞争使用设备时,按一定策略分配和管理各种设备,使系统能有条不紊的工作5.与设备无关性(设备独立性)5.1 I/O系统一、I/O设备1.I/O设备类型按传输速率分(高速、低速、中速)按信息交换的单位分(块设备、字符设备)按共享属性分(独占设备、共享设备、虚拟设备)2.设备与控制器之间的接口 I/O设备一般由机械和电子两部分组成,机械部分是设备本身(物理装置);电子部分叫做设备控制器或适配器。在小型和微型机中,它常采用印刷电路卡插入计算机中(接口),完成设备与主机间的连接和通讯。5.1 I/O系统二、设备控制器控制一个或多个I/O设备,是CPU和I/O设备之间的接口。可编址的设备基本功能:接受识别命令数据交换标识和报告设备的状态地址识别数据缓冲差错控制当控制器接受一条命令后,可独立于CPU完成指定操作,CPU可以转去执行其它运算。命令完成时,控制器产生一个中断,CPU响应中断,控制转给操作系统。CPU通过读控制器寄存器中的信息,获得操作结果和设备状态控制器与设备之间的接口常常是一个低级接口。例如磁盘,可以按每个磁道8扇区,每个扇区512个字节进行格式化。然而,实际从驱动器出来的却是一连串的位流,以一个头标(preamble)开始,然后是一个扇区的4096位(5128),最后是检查和或错误校验码(ErrorC一C:ECC)。头标是在对磁盘格式化时写上的,它包括柱面和扇区数,扇区的大小和类似的一些数据控制器的任务是把串行的位流转换为字节块,并进行必要的错误修正。首先,控制器按位进行组装,然后存入控制器内部的缓冲区中形成以字节为单位的块。在对块验证检查和并证明无错误时,再将它复制到主存中5.1 I/O系统设备控制器的组成设备控制器与处理机的接口设备控制器与设备的接口I/O逻辑定义:通道是独立于CPU的专门负责数据输入/输出传输工作的处理机,对外部设备实现统一管理,代替CPU对输入/输出操作进行控制,从而使输入,输出操作可与CPU并行操作。通道又称输入输出处理机,术语“通道”专指专门用来负责输入输出工作的处理机(简称处理机)。比起中央处理机来,通道是一个比功能较弱、速度较慢、价格较为便宜的处理机。但“通道”一词在微型机中常指与或与处理机相连设备的单纯的数据传送通路,它并不具有处理机的功能。通道指令单一,不具有自己的内存。5.1 I/O系统5.1 I/O系统 1.引入通道的目的为了使CPU从I/O事务中解脱出来,同时为了提高CPU与设备,设备与设备之间的并行工作能力 2.通道类型字节多路通道:通常按字节交叉的方式工作,适用于低速设备。数据选择通道:按成组方式进行数据传输,适用于高速设备。数组多路通道:综合前二个优点(数据传送率和通道利用率都较高)。主要连接以字节为单位的低速I/O设备。如打印机,终端。字节多路通道以字节为单位传输信息,它可以分时地执行多个通道程序。当一个通道程序控制某台设备传送一个字节后,通道硬件就控制转去执行另一个通道程序,控制另一台设备传送信息1)1)字节多路通道字节多路通道主要连接磁盘,磁带等高速I/O设备选择通道是以成组方式工作的,即每次传送一批数据,故传送速度很高。选择通道在一段时间内只能执行一个通道程序,只允许一台设备进行数据传输当这台设备数据传输完成后,再选择与通道连接的另一台设备,执行它的相应的通道程序 2)2)数组选择通道数组选择通道 数组选择通道选择通道选择通道主要连接高速设备成组多路通道结合了选择通道传送速度高和字节多路通道能进行分时并行操作的优点。它先为一台设备执行一条通道指令,然后自动转接,为另一台设备执行一条通道指令这样,对于连接多台磁盘机的数组多路通道,它可以启动它们同时执行移臂定位操作,然后,按序交叉地传输一批批数据。数据多路通道实际上是对通道程序采用多道程序设计的硬件实现 3)数组多路通道 通道:执行通道程序,向控制器发出命令,并具有向CPU发中断信号的功能。一旦CPU发出指令,启动通道,则通道独立于CPU工作。一个通道可连接多个控制器,一个控制器可连接多个设备,形成树形交叉连接 主要目的是启动外设时:a 提高了控制器效率 b 提高可靠性 c 提高并行度交叉连接3.通道工作原理 通道相当于一个功能简单的处理机,包含通道指令(空操作,读操作,写操作,控制,转移操作),并可执行用这些指令编写的通道程序5.1 I/O系统通道地址字 CAW:记录通道程序在内存中的地址通道命令字 CCW:保存正在执行的通道指令通道状态字 CSW:存放通道执行后的返回结果通道数据字 CDW:存放传输数据 1)通道运算控制部件用于I/O操作的命令主要有两种:I/O指令:启动通道程序通道命令:对I/O操作进行控制通道命令格式 命令格式一般包括:操作码、数据传输内存地址、特征位、计数器 2)通道命令 CPU:执行用户程序,当遇到I/O请求时,可根据该请求生成通道程序放入内存(也可事先编好放入内存),并将该通道程序的首地址放入CAW中;之后执行“启动I/O”指令,启动通道工作。通道:接收到“启动I/O”指令后,从CAW中取出通道程序的首地址,并根据首地址取出第一条指令放入CCW中,同时向CPU发回答信号,使CPU可继续执行其他程序,而通道则开始执行通道程序,完成传输工作。3)工作原理4.通道与CPU的关系主从关系可并行工作有通信方式作用不同(通道/;计算)5.1 I/O系统5.2 I/O5.2 I/O控制方式控制方式1、程序I/O方式2、中断驱动控制方式3、直接存储器访问DMA 控制方式4、通道控制方式程序程序I/OI/O方式方式1.前提:无中断机构2.过程:CPU在一条启动外设的I/O指令发出后,便检测一台设备的忙闲标志,如果外设的工作没有完成,则标志一直为忙状态,CPU便一直进行循环检测下去,直到标志为不忙为止。3.缺点:CPU和I/O设备速度不匹配,使CPU大部分时间处于等待,因为无中断机构,使设备无法向CPU报告它已完成操作利用中断信号,外设可以将自身操作的状态及时反馈给中央处理CPU,这样,CPU便可以在发出一条I/O指令后,转去继续完成其他任务。而对外设的I/O工作,则转成了由设备控制器来指挥完成。当I/O操作完成后。外设控制控制器自动俄CPU发出中断请求信号。CPU接到I/O中断信号后进行干预,启动I/O中断处理程序执行。中断驱动控制方式中断驱动控制方式直接存储器访问直接存储器访问DMADMA控制方式控制方式1.DMA方式也称为直接存取方式,主要用在块设备的I/O操作中。在DMA方式中,利用总线直接连接外设和内存,由DMA控制器窃取总线占有权,完成外设与内存间的成批数据交换。基本思想是在外围设备和内存之间开辟直接的交换通道。2.DMA方式的特点数据传输的基本单位是数据块(每次至少传送一个数据块在CPU,IO间)传送的数据是从设备直接送入内存的或相反(以前是CPU和控制器寄存器打交)仅在传送一个或多个数据块的开始和结束时才需CPU干预,整块连续的数据的传送是在控制器的控制下完成的。DMA控制器的组成主机和控制器之间的接口命令/状态寄存器CR内存地址寄存器MAR数据寄存器DR数据计数器DC过程:当处理器需要读写一整块数据时,给DMA控制器发送一条命令。包含:是否请求一次读或写,I/O设备的编址,开始读或写的主存编址,需要传送的数据长度等信息处理器发送完命令后就可处理其它事情,DMA控制器将自动管理数据的传送。当这个过程完成后,它会给处理器发一个中断,处理器只在开始传送和传送结束时关注一下就可处理器和DMA传送不完全并行有时会有总线竞争的情况发生在DMA传送时,处理器访问总线速度会变慢DMADMA和中断方式的主要区别和中断方式的主要区别1.中断方式是在数据缓冲寄存器满之后发出中断请求CPU进行中断处理,而DMA方式则是在所要求传送的数据块全部传送完时要求CPU进行中断处理2.中断方式的数据传送是在中断处理时由CPU控制完成的,而DMA方式是在DMA控制器的控制下不经过CPU控制完成的。DMADMA方式的工作过程方式的工作过程独立于中央处理器,专门负责数据I/O传输的处理机它对外设实现统一管理代替CPU对I/O操作进行控制使CPU和外设可以并行工作通道又称为I/O处理机引入通道的目的:为了使CPU从I/O事务中解脱出来同时为了提高CPU与设备、设备与设备之间的并行度通道控制方式通道控制方式通道控制方式(续)通道控制方式(续)通道方式的处理过程(1)某进程要使用I/O设备时,CPU向通道发出指令,指明I/O操作,I/O设备号和调用的通道程序的首址(2)通道接到命令后通过执行通道程序便可完成CPU指定的I/O任务通道程序通道程序操作PR计数内存地址WRITE0080813WRITE001401034WRITE01605830WRITE013002000WRITE002501850WRITE11250720通道和通道和DMADMA方式的比较方式的比较相似之处:以内存为中心,实现设备和内存的直接数据交换。不同之处:1.DMA方式中数据的传送方向、内存始址、传送数据长度都有CPU控制,而通道方式中,由通道进行控制2.DMA方式时,每台设备至少一个DMA控制器,通道方式可以做到一个通道控制多台设备与内存进行交换3.通道方式进一步减少CPU的干预,把对一个数据块为单位的干预减少为对一组数据块的干预,又可实现CPU、I/O和通道三者并行操作。1.1.缓冲技术的引入目的缓冲技术的引入目的 以缓解CPU与外部设备(I/O)之间速度不匹配的矛盾,提高CPU与I/O设备的并行性。提高资源利用率缓冲区:有一定容量、暂存信息的存贮装置。5.3 缓冲技术2.2.缓冲管理的任务:缓冲管理的任务:组织好缓冲区,并提供获得和释放缓冲区的手段2.引入缓冲区的主要原因缓和CPU和I/O设备间速度不匹配的矛盾(即凡是数据到达和离去速度不匹配的地方均可采用缓冲技术。)减少对CPU的中断频率,放宽对CPU中断响应时间的限制提高CPU和I/O设备间的并行性3.引入缓冲区的缺点在系统区要设置相当大的缓冲池才能满足所有的请求。从系统缓冲区传送数据到调用进程缓冲区要花费额外的时间,增加了系统的总开销。1.专用硬件缓冲器:例如:I/O控制器中的数据缓冲寄存器 会增加硬件成本,可在关键的地方采用少量必要的硬件缓冲器2.软件缓冲(内存缓冲):在内存中开辟具有N个单元的专用缓冲区,以便存放输入输出的数据。4.缓冲的实现方法5.几种缓冲技术1)单缓冲2)双缓冲3)循环缓冲(多缓冲)4)缓冲池5.3.1 单缓冲1.每当用户进程发出一个I/O请求时,操作系统便在内存中位置开辟一个缓冲区。2.单缓冲是在系统的CPU与外设之间只设立一个缓冲区。其工作方式是串行完成的。当输入设备占用缓冲区时,输出设备必须处于等待状态;而当输出设备正在缓冲区将数据取走时,输入设备也必须等待,其工作方式是串行完成的。此时,缓冲区成了可共享的临界资源,必须互斥占用,不可能实现并行工作。单缓冲的结构示意图单缓冲的结构示意图cpu缓冲区输入设备输出设备5.3.2 双缓冲(Double Buffer)1.双缓冲技术,即为输入或输出分配两个缓冲区,并让两个缓冲区交替工作,就可以形成并行操作的方式。当输入或是输出时,外设先占用一个缓冲区,等当该缓冲区满后,再转去占用另一个缓冲区,同时第一个缓冲区中的数据可被取走,缓冲区可以释放,当另一个缓冲区满后,设备又可转过来占用被释放的缓冲区。这样交替占用的缓冲区,可以使CPU与外设间的并行度进一步提高。2.和单缓冲相比,能够消除用户等待时间双缓冲的结构示意图双缓冲的结构示意图双缓冲的使用(a)由输入设备向用户进程输入数据由输入设备向用户进程输入数据双缓冲的使用(b)生产者、消费者问题生产者、消费者问题单、双缓冲的比较(单、双缓冲的比较(a a)单、双缓冲的比较(单、双缓冲的比较(b b)5.3.3 循环缓冲1.引入的原因主要解决输入与输出数据不匹配的情况2.循环缓冲的组成多个缓冲按顺序构成环形,先进先出队列的形式,设头尾、指针指向同一个缓冲区。头、尾指针读写时不能相互超越。多个缓冲区多个指针5.3.3 循环缓冲(续)3.循环缓冲区的使用Getbuf过程:Releasebuf过程:4.进程同步nexti(空)指针追赶上nextg(满)指针nextg(满)指针追赶上nexti(空)指针5.3.4 缓冲池 1.特点:供多个进程共享2.缓冲池的组成:三种类型的缓冲区:空缓冲区装满输入数据的缓冲区装满输出数据的缓冲区形成三个队列空缓冲队列emq输入队列inq输出队列outq5.3.4 缓冲池(续)3.Getbuf和Putbuf过程 Procedure Getbuf(type)begin P(RS(Type)P(MS(Type)B(number):=Takebuf(Type);V(MS(Type)end Procedure putbuf(type,number)Begin P(MS(Type)Addbuf(type,number)V(MS(Type)v(RS(Type)End5.3.4 缓冲池(续)4.缓冲区的工作方式收容输入提取输入收容输出提取输出四种类型的工作缓冲区:Hin(收容输入工作缓冲区)Sin(提取输入工作缓冲区)Sout(提取输出工作缓冲区)Hout(收容输出工作缓冲区)5.4 设备分配当某进程向系统提出I/O请求时,设备分配程序按一定策略分配设备、控制器和通道,形成一条数据传输通路,以供主机和设备间信息交换在多通路的系统中,为了满足一个请求,不仅仅是分配一个设备的问题,还应分配相应的控制器和通道,以确保与设备之间能进行通信,在存储器与/设备之间能进行数据的直接存取。设备管理程序对设备进行分配和控制是借助于一些表格;表格中记录了对设备控制所需之信息。它们是设备管理程序实现管理功能的数据结构。5.4.1 设备分配中的数据结构它们是设备管理程序实现管理功能的数据结构。如下表:设备控制表()每个设备一个控制器表()每个控制器一个通道表()每个通道一个系统设备表()整个系统一个设备控制表DCT每个设备一张,记录本设备的情况COCT和CHCT与DCT类似设备类型设备标识符设备状态:等待/不等待 忙/闲指向控制器表的指针重复执行次数或时间设备队列的队首指针系统设备表SDT整个系统一张表,记录系统中所有I/O设备的信息,表目包括:设备类型、设备标识符、驱动程序入口地址、DCT表指针等5.4.2设备分配策略 由于在多道程序系统中,进程数多于资源数,引起资源的竞争。因此,要有一套合理的分配原则 考虑的因素:*I/O设备的固有属性 *I/O设备的分配算法 *设备分配的安全性 *与设备的无关性1.独占、共享、虚拟分配技术独占分配方式:即一个设备分配给某作业后便由该作业独占,直到该作业完成并释放后,其它作业方能使用。大多数低度速设备都属于独占设备。设备得不到充分利用,还可能引起死锁。共享分配方式:如磁盘、磁鼓之类的外存储器,既具有很能大的存储容量,其定位操作的时间又短,因此,它们可为若干作业所共享。虚拟分配方式:把一台输入机虚拟为几台“虚拟”的输入机。例如:为了提高设备利用率引入了脱机输入输出或采用技术,变一台为“多台设备”要考虑充分发挥效率,避免由于不合理的分配策略造成死锁。静态分配:在进程运行前,完成设备分配;运行结束时,收回设备 缺点:设备利用率低动态分配:在进程运行过程中,当用户提出设备要求时,进行分配,一旦停止使用立即收回 优点:效率好 缺点:分配策略不好时,产生死锁独占设备的分配 由于有多个进程同时访问,且访问频繁,就会影响整个设备使用效率,影响系统效率。因此要考虑多个访问请求到达时服务的顺序,使平均服务时间越短越好。共享设备分配 2./设备的分配算法/设备的分配机制,除了与设备的固有属性有关外,还与系统所采用的分配策略有关。/设备的分配与进程调度很能相似,同样可采用如下的一些算法:先请求先服务:当有多个进程对同一设备提出/请求时,该算法要求把所有发出/请求的进程,按其发出请求的先后次序排成一个等待该设备的队列。设备分配程序把/设备分配给队列中第一个进程。优先权最高者优先。对于何必先权相同的请求,则按先请求先分配的原则排队。3.设备分配的安全性安全分配方式进程发出I/O请求后,进入阻塞状态,直到I/O完成被唤醒。缺点:进程推进速度缓慢,CPU和I/O设备串行工作不安全分配方式 为了能同时操作多个/设备以加速进程的推进,应使得某进程以命令形式发出/请求后,仍可继续运行,需要时又可发出第二个、第三个/请求。多请求方式的缺点是,设备分配不安全,因为它具备请求和保持条件,因而有可能产生死锁的情况。由此可见,在多请求方式中,设备的分配程序应保证不发生进程死锁。4.与设备无关性(设备独立性)为了提高系统的可适应性和可扩展性,我们希望 所编制的用户程序与实际使用的物理设备无关,这就是所谓与设备无关性(设备独立性)。为此,我们将逻辑设备与物理设备区分,并引入逻辑设备名称和物理设备名称的概念。为了实现与设备的无关性,系统中必须有一张联系逻辑设备名称和物理设备名称的映射表,(表)好处:设备分配时的灵活性易于实现I/O重定向系统的逻辑设备表逻辑设备号物理设备号 驱动程序地址172042027204203220E00441FC106120D02772042015101FC1016111FC120逻辑设备与物理设备 这个中为三个不同的逻辑设备号列出了同样的物理设备和驱动程序的地址。这说明逻辑设备,目前均得到同一个物理设备的服务(这或许是因为激光打印机及字母型打印机正在被修理,因此本来输出到这些设备上的请求都移到行式打印机)。在这个映射表中我们还可以看到物理设备和都是由同一个驱动程序服务的。这是假定它们是同一类型的终端。例如所有的终端均由一个驱动程序服务。LUT的设置问题1.整个系统中只设置一张LUT。(单用户系统中)2.为每个用户(进程)设置一张LUT,并将其放入该进程的PCB中。(多用户系统中)设备独立性软件 4.设备分配程序 当系统中已经设置了数据结构,且确定了一定的分配原则后,如果某进程提出了请求,便可按下述步骤进行设备分配:根据用户请求的I/O设备的物理名,查找SDT,找到该设备所连接的DCT;继续查找与该设备连接的COCT和CHCT,就找到了一条通路。即:分配设备 分配控制器-分配通道设备分配程序的改进基本设备分配程序的缺点:进程是以物理设备名提出I/O请求的采用的是单通路系统结构,容易产生“瓶颈”设备分配程序的改进增加设备的独立性考虑多通路情况为进程为进程P P分配所需的分配所需的I/OI/O设备设备从从SDTSDT表查该类设备的控制表表查该类设备的控制表DCTDCT由由DCTDCT检查该设备忙否检查该设备忙否?不忙不忙检查分配此设备的安全性检查分配此设备的安全性?不安全不安全分配此设备给进程分配此设备给进程P P查此设备连接的查此设备连接的COCTCOCT忙否忙否?不忙不忙不忙不忙分配此控制器给进程分配此控制器给进程P P查此控制器连接的查此控制器连接的CHCTCHCT忙否忙否?最后一个最后一个DCT?DCT?分配此通道给进程分配此通道给进程P P启动启动I/O,I/O,进行具体的进行具体的I/OI/O操作操作忙忙进程进程P的的PCB放入放入此设备的等待队列此设备的等待队列YN忙忙最后一个最后一个COCT?COCT?最后一个最后一个DCT?DCT?进程进程 P 的的 PCB 放入放入此控制器的等待队列此控制器的等待队列YNY忙忙最后一个最后一个CHCT?CHCT?Y最后一个最后一个COCT?COCT?进程进程 P 的的 PCB 放入放入此通道的等待队列此通道的等待队列NYNN多通路设备分配流程示意图多通路设备分配流程示意图5.4.4 SPOOLing技术1.什么是SPOOLing2.SPOOLing系统的组成3.共享打印机的实现4.SPOOLing系统的特点什么是SPOOLingSimultaneous peripheral Operating On-Line 为了缓和CPU的高速性与I/O设备的低速性间的矛盾而引入了脱机输入、脱机输出技术。是利用专门的外围控制机,将I/O设备上的数据传送到高速磁盘上,或者相反。SPOOLing系统既不同于脱机方式,SPOOLing 技术实际上是一种外围设备同时联机操作技术,又称为排队转储技术。主要是利用程序模拟输入输出时的外围控制机的功能。在主机的直接控制下实现脱机的输入输出功能。SPOOLing系统的组成主要包括以下三部分:1.输入井和输出井:这是在磁盘上开辟出来的两个存储区域。输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据。输出井模拟脱机输入时的磁盘,用于收容用户程序的输出数据。2.输入缓冲区和输出缓冲区:这是在内存中开辟的两个缓冲区。输入缓冲区用于暂存有输入设备送来的数据,以后在传送到输出井。输出缓冲区用于暂存从输出井送来的数据,以后再传送到输出设备。3.输入进程和输出进程:输入进程模拟脱机输入时的外围控制机,将用户要求的数据有输入设备到输入缓冲区,再送到输入井。当CPU需要输入设备时,直接从输入井读入内存。输出进程模拟脱机输出时的外围控制机,把用户要求输入的数据,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据,经过输出缓冲区送到输出设备上。共享打印机的实现具体操作:系统接受用户的打印请求,但并不真正把打印机分配给该用户进程,而是先在输出井中申请一个空闲盘块区,并将要打印的数据送入其中;然后为用户申请并填写请求打印表,将该表挂到请求打印队列上。若打印机空闲,输出程序从请求打印队首取表,将要打印的数据从输出井传送到内存缓冲区,再进行打印,直到打印队列为空。SPOOLing技术实质上是用户进程利用一共享设备的一个存储区,并不是真正占有这一设备,用户进程把要完成的任务以文件的形式存入存储区,在存储区中排队并等待SPOOLing系统调度,只有被SPOOLing系统调度并输出,此项任务才真正完成,通过这一技术可以大大提高了共享设备的使用率,节约了硬件资源。SPOOLing技术的特点1.提高了I/O速度.从对低速I/O设备进行的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的矛盾.2.将独占设备改造为共享设备。设备并没有分配给任何进程.在输入井或输出井中,分配给进程的是一存储区和建立一张I/O请求表.3.实现了虚拟设备功能.多个进程同时使用一独享设备,而对每一进程而言,都认为自己独占这一设备,不过,该设备是逻辑上的设备.5.5 设备处理(设备驱动程序)为了控制I/O传输,系统为每类设备编制设备驱动程序设备驱动程序是一种低级的系统例程。它必须和系统的输入输出硬设备相互通信。使用特权/指令来访问硬件,它通常是用汇编语言或系统编程语言写的。任务:主要负责接收和分析从设备分配转来的信息,并根据设备分配的结果,结合具体物理设备特性完成以下具体工作。接收由I/O进程发来的命令和参数,并将命令中的抽象要求转换为具体要求,例如,将磁盘块号转换为磁盘的盘面、磁道号及扇区号。检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。发出I/O命令,如果设备空闲,便立即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序。1.设备驱动程序的功能2.设备处理方式 (1)为每一类设备设置一个进程,专门用于执行这类设备的I/O操作。(2)在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备的I/O操作。(3)不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序(模块),供用户进程或系统进程调用。3.设备驱动程序的特点 (1)驱动程序主要是指在请求I/O的进程与设备控制器之间的一个通信和转换程序。(2)驱动程序与设备控制器和I/O设备的硬件特性紧密相关,因而对不同类型的设备应配置不同的驱动程序。(3)驱动程序与I/O设备所采用的I/O控制方式紧密相关。(4)由于驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言书写。4.设备驱动程序的处理过程将抽象要求转换为具体要求 检查I/O请求的合法性 读出和检查设备的状态 传送必要的参数 工作方式的设置 启动I/O设备 中断现场保护示意图 中断处理流程磁盘存储器管理的主要任务为文件分配存储空间合理地组织文件地存储方式,以提高访问速度提高磁盘存储空间地利用率提高磁盘I/O速度,改善文件性能确保文件系统的可靠性(备份)5.6 磁盘存储器管理5.6.1 磁盘性能简述1.数据的组织和格式数据的组织和格式 磁盘的格式化1)固定头磁盘 这种磁盘在每条磁道上都有一读/写磁头,所有的磁头都被装在一刚性磁臂中。通过这些磁头可访问所有各磁道,并进行并行读/写,有效地提高了磁盘的I/O速度。这种结构的磁盘主要用于大容量磁盘上。2)移动头磁盘 每一个盘面仅配有一个磁头,也被装入磁臂中。为能访问该盘面上的所有磁道,该磁头必须能移动以进行寻道。可见,移动磁头仅能以串行方式读/写,致使其I/O速度较慢;但由于其结构简单,故仍广泛应用于中小型磁盘设备中。2.磁盘的类型3.磁盘访问时间 1)寻道时间Ts 这是指把磁臂(磁头)移动到指定磁道上所经历的时间。该时间是启动磁臂的时间s与磁头移动n条磁道所花费的时间之和,即Ts=mn+s 其中,m是一常数,与磁盘驱动器的速度有关,对一般磁盘,m=0.2;对高速磁盘,m0.1,磁臂的启动时间约为2 ms。这样,对一般的温盘,其寻道时间将随寻道距离的增加而增大,大体上是530 ms。2)旋转延迟时间T 这是指定扇区移动到磁头下面所经历的时间。对于硬盘,典型的旋转速度大多为5400 r/min,每转需时11.1 ms,平均旋转延迟时间T为5.55 ms;对于软盘,其旋转速度为300 r/min或600 r/min,这样,平均T为50100 ms。3)传输时间Tt 把数据从磁盘读出或向磁盘写入数据所经历的时间。Tt的大小与每次所读/写的字节数b和旋转速度有关:其中,r为磁盘每秒钟的转数;N为一条磁道上的字节数,当一次读/写的字节数相当于半条磁道上的字节数时,Tt与T相同,因此,可将访问时间Ta表示为:其中,r为磁盘每秒钟的转数;N为一条磁道上的字节数,当一次读/写的字节数相当于半条磁道上的字节数时,Tt与T相同,因此,可将访问时间Ta表示为:5.6.2 磁盘调度1.先来先服务先来先服务FCFS(First-Come,First Served)FCFS调度算法2.最短寻道时间优先SSTF(Shortest Seek Time First)SSTF调度算法3.扫描(SCAN)算法 SSTF算法虽然能获得较好的寻道性能,但却可能导致某个进程发生“饥饿”(Starvation)现象。因为只要不断有新进程的请求到达,且其所要访问的磁道与磁头当前所在磁道的距离较近,这种新进程的I/O请求必须优先满足。对SSTF算法略加修改后所形成的SCAN算法,即可防止老进程出现“饥饿”现象。1)1)进程进程“饥饿饥饿”现象现象 2)SCAN算法 SCAN调度算法示例4.循环扫描(CSCAN)算法 CSCAN调度算法示例 1)N-Step-SCAN算法 在SSTF、SCAN及CSCAN几种调度算法中,都可能出现磁臂停留在某处不动的情况,例如,有一个或几个进程对某一磁道有较高的访问频率,即这个(些)进程反复请求对某一磁道的I/O操作,从而垄断了整个磁 盘 设 备。我 们 把 这 一 现 象 称 为“磁 臂 粘 着”(Armstickiness)。在高密度磁盘上容易出现此情况。N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列。而每处理一个队列时又是按SCAN算法,对一个队列处理完后,再处理其他队列。当正在处理某子队列时,如果又出现新的磁盘I/O请求,便将新请求进程放入其他队列,这样就可避免出现粘着现象。当N值取得很大时,会使N步扫描法的性能接近于SCAN算法的性能;当N=1时,N步SCAN算法便蜕化为FCFS算法。5.N-Step-SCAN和FSCAN调度算法 2)FSCAN算法 FSCAN算法实质上是N步SCAN算法的简化,即FSCAN只将磁盘请求队列分成两个子队列。一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理。在扫描期间,将新出现的所有请求磁盘I/O的进程,放入另一个等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理。是指利用内存中的存储空间,来暂存从磁盘中读出的一系列盘块中的信息。因此,这里的高速缓存是一组在逻辑上属于磁盘,而物理上是驻留在内存中的盘块。高速缓存在内存中可分成两种形式。第一种是在内存中开辟一个单独的存储空间来作为磁盘高速缓存,其大小是固定的,不会受应用程序多少的影响;第二种是把所有未利用的内存空间变为一个缓冲池,供请求分页系统和磁盘I/O时(作为磁盘高速缓存)共享。此时高速缓存的大小,显然不再是固定的。当磁盘I/O的频繁程度较高时,该缓冲池可能包含更多的内存空间;而在应用程序运行得较多时,该缓冲池可能只剩下较少的内存空间。5.6.3 磁盘高速缓存(Disk Cache)1.磁盘高速缓存的形式 系统可以采取两种方式,将数据交付给请求进程:(1)数据交付。这是直接将高速缓存中的数据,传送到请求者进程的内存工作区中。(2)指针交付。只将指向高速缓存中某区域的指针,交付给请求者进程。后一种方式由于所传送的数据量少,因而节省了数据从磁盘高速缓存存储空间到进程的内存工作区的时间 2.数据交付方式 由于请求调页中的联想存储器与高速缓存(磁盘I/O中)的工作情况不同,因而使得在置换算法中所应考虑的问题也有所差异。因此,现在不少系统在设计其高速缓存的置换算法时,除了考虑到最近最久未使用这一原则外,还考虑了以下几点:(1)访问频率。(2)可预见性。(3)数据的一致性。3.置换算法 在UNIX系统中专门增设了一个修改(update)程序,使之在后台运行,该程序周期性地调用一个系统调用SYNC。该调用的主要功能是强制性地将所有在高速缓存中已修改的盘块数据写回磁盘。一般是把两次调用SYNC的时间间隔定为30 s。这样,因系统故障所造成的工作损失不会超过30 s的劳动量。而在MS-DOS中所采用的方法是:只要高速缓存中的某盘块数据被修改,便立即将它写回磁盘,并将这种高速缓存称为“写穿透、高速缓存”(write-through cache)。MS-DOS所采用的写回方式,几乎不会造成数据的丢失,但须频繁地启动磁盘。4.周期性地写回磁盘1.提前读(Read-Ahead)2.延迟写 3.优化物理块的分布 4.虚拟盘 5.6.4 提高磁盘I/O速度的其它方法