您好,欢迎访问三七文档
操作系统设备管理2设备管理功能设备管理:I/O管理,负责管理设备和控制I/O传输操作功能:1设备分配与回收2设备控制3设备状态跟踪3设备分类按传输速率分:低速设备(几个字节-数百个字节/秒)键盘、鼠标等中速设备(数千个字节-数万个字节/秒)打印机等高速设备磁盘光盘机等4按设备的使用特性存储设备输入/输出设备5按信息交换的单位分:块设备(数据的存取以数据块为单位)磁盘块设备在输入输出时常采用DMA方式字符设备(数据的存取以字符为单位)键盘打印机等字符设备在输入输出时常采用中断方式6按设备的共享属性:独占设备临界资源共享设备磁盘虚拟设备将一台设备变换为若干台逻辑设备虚拟光驱、虚拟网卡7设备控制器(1)设备并非直接与CPU通信,之间经过设备控制器(2)设备与设备控制器之间的连接:数据信号线:传送数据信号(中间缓冲区)状态信号线:传送设备当前状态控制信号线:规定了设备将要执的动作输出:先到缓冲,再到转换器(信号/数据)输入:先到转换器,再到缓冲控制信号:读操作,写操作,磁头移动等状态:正在读或写,读写完成等缓冲转换器控制逻辑信号数据数据信号线状态信号线控制信号线至设备控制器I/O设备8设备控制器功能控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。功能:接收和识别命令--------cpu可向设备控制器发送多种指令,设备控制器能识别接收这些指令,如:磁盘读写等。数据交换-----实现cpu与控制器之间、控制器与设备之间的数据交换。标识和报告设备状态——记下设备状态供cpu了解。例如:只有当设备处于发送就绪状态时,cpu才能启动控制器从设备中读取数据。地址识别——每个设备都有一个地址,控制器能够识别它所控制的每个设备的地址。数据缓冲——I/o设备的低速与cpu高速之间的缓冲。9设备控制器的组成数据寄存器控制/状态寄存器数据线I/O逻辑…控制器与设备接口1控制器与设备接口i数据状态控制数据状态控制…地址线控制线CPU与控制器接口控制器与设备接口10三部分组成:1、设备控制器与处理器的接口三类信号线:数据线、地址线、控制线两类寄存器:数据寄存器、控制\状态寄存器2、设备控制器与设备的接口一个控制器可接多个设备,一个接口接一个设备3、IO逻辑实现对设备的控制,CPU启动设备过程:发送控制命令和地址给控制器,IO逻辑接收命令并译码I/O控制方式在程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费。在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构,使I/O设备无法向CPU报告它已完成了一个字符的输入操作。11向I/O控制器发读命令读I/O控制器的状态检查状态?从I/O控制器中读入字向存储器中写字传送完成?未就绪就绪出错CPU¡úI/OI/O¡úCPUI/O¡úCPUCPU¡ú内存下条指令完成未完(a)程序I/O方式12中断驱动I/O控制方式当启动I/O设备时,CPU向设备控制器发出I/O指令,然后返回执行原来指令。由设备控制器控制设备,当设备完成I/O操作时,中断方式通知CPU处理。在I/O设备输入每个数据的过程中,由于无须CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。可见,这样可使CPU和I/O设备都处于忙碌状态,从而提高了整个系统的资源利用率及吞吐量。例如,从终端输入一个字符的时间约为100ms,而将字符送入终端缓冲区的时间小于0.1ms。若采用程序I/O方式,CPU约有99.9ms的时间处于忙—等待中。采用中断驱动方式后,CPU可利用这99.9ms的时间去做其它事情,而仅用0.1ms的时间来处理由控制器发来的中断请求。可见,中断驱动方式可以成百倍地提高CPU的利用率。13向I/O控制器发读命令读I/O控制器的状态检查状态?从I/O控制器中读字向内存中写字传送完成?就绪出错CPU¡úI/OI/O¡úCPUI/O¡úCPUCPU¡ú内存下条指令完成未完中断CPU做其它事(b)中断驱动方式14直接存储器访问DMAI/O控制方式1.DMA(DirectMemoryAccess)控制方式的引入中断传输仍是以字为单位的,即传输完一个字后进行一次中断。不利于操作大量数据。为了进一步减少CPU的干预,引入了直接存储器访问方式。①数据传输的基本单位是数据块;②所传送的数据是从设备直接送入内存的,或者相反;③仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。可见,DMA方式成百倍地减少了CPU对I/O的干预。152.DMA控制器的组成DMA控制器的组成DRMARDCCRI/O控制逻辑…主机—控制器接口控制器与块设备接口count内存CPU命令系统总线DMA控制器16为了实现在主机与控制器之间成块数据的直接交换,必须在DMA(1)命令/状态寄存器CR。用于接收从CPU发来的I/O命令或有关控制信息,或设备的状态。(2)内存地址寄存器MAR。在输入时,它存放把数据从设备传送到内存的起始目标地址;在输出时,它存放由内存到设备的内存源地址。(3)数据寄存器DR。用于暂存从设备到内存,或从内存到设备的数据。(4)数据计数器DC。存放本次CPU要读或写的字(节)数。173.DMA工作过程设置AR和DC初值启动DMA传送命令挪用存储器周期传送数据字存储器地址增1字计数寄存器减1DC=0?请求中断在继续执行用户程序的同时,准备又一次传送否是18向I/O控制器发布读块命令CPU¡úDMACPU做其它事读DMA控制器的状态中断DMA¡úCPU下条指令(c)DMA方式向I/O控制器发读命令读I/O控制器的状态检查状态?从I/O控制器中读入字向存储器中写字传送完成?未就绪就绪出错CPU¡úI/OI/O¡úCPUI/O¡úCPUCPU¡ú内存下条指令完成未完(a)程序I/O方式向I/O控制器发读命令读I/O控制器的状态检查状态?从I/O控制器中读字向内存中写字传送完成?就绪出错CPU¡úI/OI/O¡úCPUI/O¡úCPUCPU¡ú内存下条指令完成未完中断CPU做其它事(b)中断驱动方式19I/O通道控制方式1.I/O通道控制方式的引入I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。例如,当CPU要完成一组相关的读(或写)操作及有关控制时,只需向I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首址和要访问的I/O设备,通道接到该指令后,通过执行通道程序便可完成CPU指定的I/O任务。202.通道程序(1)操作码。(2)内存地址。(3)计数。(4)通道程序结束位P。(5)记录结束标志R。21操作PR计数内存地址WRITE0080813WRITE001401034WRITE01605830WRITE013002000WRITE002501850WRITE112507202223I/O通道1.I/O通道(I/OChannel)设备的引入实际上,I/O通道是一个用来控制外部设备的硬件机制,是一种特殊的处理机。它具有执行I/O指令的能力,并通过执行通道(I/O)程序来控制I/O操作。IO通道的目的使原来由CPU执行的IO任务承担下来但I/O通道又与一般的处理机不同,主要表现在以下两个方面:一是其指令类型单一,这是由于通道硬件比较简单,其所能执行的命令,主要局限于与I/O操作有关的指令;再就是通道没有自己的内存,通道所执行的通道程序是放在主机的内存中的,换言之,是通道与CPU共享内存。2.通道类型1)字节多路通道(ByteMultiplexerChannel)字节多路通道不适于连接高速设备控制器A控制器B控制器C控制器D控制器N…A1A2A3…子通道AB1B2B3…子通道BC1C2C3…子通道CN1N2N3…子通道NA1B1C1…A2B2C2…设备242)数组选择通道(BlockSelectorChannel)可以连接多台高速设备只含有一个分配型子通道,在一段时间内只能控制一台设备进行数据传送,并独占该通道。这种通道的利用率很低。253)数组多路通道(BlockMultiplexerChannel)数组多路通道是以上二种通道结合而形成的一种新通道数据传送是按数组方式进行有多个非分配型子通道,数据传输速率很高,通道利用率也高广泛地用于连接多台高、中速的外围设备263.“瓶颈”问题设备1设备2设备3设备4设备5设备6设备7控制器1控制器2控制器3控制器4通道1通道2存储器27I/O设备控制器1控制器2通道1通道2存储器I/O设备I/O设备I/O设备28缓冲管理缓冲的引入(1)缓和CPU与I/O设备间速度不匹配的矛盾。(2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制。(3)提高CPU和I/O设备之间的并行性。29图5-10利用缓冲寄存器实现缓冲1位缓冲9.6Kb/s8位缓冲寄存器送内存9.6Kb/s8位缓冲寄存器9.6Kb/s送内存(b)(a)(c)30单缓冲和双缓冲1.单缓冲(SingleBuffer)工作区处理(C)缓冲区传送(M)输入(T)I/O设备(a)T1M1C1T2M2C2T3M3C3T4t(b)用户进程312.双缓冲(DoubleBuffer)工作区用户进程缓冲区1缓冲区2I/O设备T1(缓冲1)M1C1M2C2M3C3T2(缓冲2)T3(缓冲3)M4C4T4(缓冲4)(a)(b)32缓冲区缓冲区A机B机(a)单缓冲发送缓冲区接收缓冲区接收缓冲区发送缓冲区A机B机(b)双缓冲33循环缓冲1.循环缓冲的组成RGGGRG165423NextiNextgRGGGRC165423NextiNextgcurrent342.(1)Get过程。(2)Release过程。353.进程同步(1)Next指针追赶上Next指针。输入进程速度大于输出进程(2)Next指针追赶上Nexti指针。输出进程速度大于输入进程36缓冲池(BufferPool)1.缓冲池的组成对于既可用于输入又可用于输出的公用缓冲池,其中至少应含有以下三种类型的缓冲区:①空(闲)缓冲区;②装满输入数据的缓冲区;③装满输出数据的缓冲区。为了管理上的方便,可将相同类型的缓冲区链成一个队列,于是可形成以下三个队列:(1)空缓冲队列em。(2)输入队列inq。(3)输出队列outq。372.Getbuf过程和Putbuf过程ProcedureGetbuf(type)beginWait(RS(type));Wait(MS(type));B(number)=Takebuf(type);Signal(MS(type));endProcedurePutbuf(type,number)beginWait(MS(type));Addbuf(type,number);Signal(MS(type));Signal(RS(type));end383.缓冲区的工作方式hinsoutsinhout收容输入提取输出用户程序提取输入收容输出缓冲池1、收容输入:输入进程需要输入数据时,调用Getbuf(emq)在emq中摘下一空区,作为收容输入缓冲区hin,并装满数据,再调用Putbuf(inq,hin),将缓冲区挂到inq中。2、提取输入:输入进程需要输入数据时,调用Getbuf(inq)从inq摘一区,作为提取输入缓冲区sin,计算进程从中提取数据。计算进程数据数据用完后,再调用Putbuf(emq,sin),将缓冲区挂到emq。393、收容输出:当计算进程需要输出时,调用Getbuf(emq)从emq中摘一区,作为收容输出缓冲区hout.当装满输出数据,又调用Putbuf(outq,hout),
本文标题:基本设备管理
链接地址:https://www.777doc.com/doc-1310353 .html