操作系统汤子英课件第6章.ppt
第六章 设备管理,6.1 I/O系统 6.2 I/O控制方式 6.3 缓冲管理 6.4 设备分配 6.5 设备处理 6.6 磁盘存储器管理,设备管理的对象:主要是I/O设备,还可能是I/O通道。设备管理的基本任务:提高利用率,提高速度。设备管理的主要功能:缓冲区管理、设备分配、设备处理、虚拟设备、及实现设备独立性。,外设的特点:种类多差异大(控制和速度)外设管理目的包括:外设资源的控制外设资源的共享提高外设资源的利用率。,6.1 I/O 系 统,6.1.1 I/O设备,1.I/O设备的类型,1)按传输速率分类,低速设备,这是指其传输速率仅为每秒钟几个字节至数百个字节的一类设备。典型设备有键盘、鼠标器、语音的输入和输出等设备。中速设备,这是指其传输速率在每秒钟数千个字节至数万个字节的一类设备。典型设备有:行式打印机、激光打印机等。高速设备,这是指其传输速率在数百千个字节至数十兆字节的一类设备。典型的高速设备有磁带机、磁盘机、光盘机等,2)按信息交换的单位分类,块设备(Block Device),这类设备用于存储信息。由于信息的存取总是以数据块为单位,故而得名。典型的块设备是磁盘,每个盘块的大小为512 B4 KB。磁盘设备的基本特征是:1)传输速率较高,通常每秒钟为几兆位;2)另一特征是可寻址,即对它可随机地读/写任一块;3)磁盘设备的I/O常采用DMA方式。字符设备(Character Device),用于数据的输入和输出。其基本单位是字符,故称为字符设备。如交互式终端、打印机等。传输速率低。字符设备在IO时,常采用中断驱动方式,3)按设备的共享属性分类这种分类方式可将I/O设备分为如下三类:独占设备。它是指在一段时间内只允许一个用户(进程)访问的设备,即临界资源;因而,对多个并发进程而言,应互斥地访问这类设备,系统一旦把这类设备分配给某进程后,便由该进程独占,直至用完释放,应当注意,独占设备的分配有可能引起进程死锁;共享设备(磁盘)。它是指在一段时间内允许多个进程同时访问的设备,当然,对于每一时刻而言,该类设备仍然只允许一个进程访问,显然,共享设备必须是可寻址的和可随机访问的虚拟设备。它是指通过虚拟技术将一台独占设备变换为若干台逻辑设备,供若干个用户(进程)同时使用,通常把这种经过虚拟技术处理后的设备,称为虚拟设备,从设备 的管理角度看,设备可分为(独占设备)、(共享设备)、(虚拟设备)。华中科大,2.设备与控制器之间的接口,图 6-1 设备与控制器间的接口,通常,设备并不是直接与CPU进行通信,而是与设备控制器通信,因此,在设备与设备控制器之间应有一接口,在该接口中有三种类型的信号。,比如打印机的几个按钮发送的信息,6.1.2 设备控制器,1.设备控制器的基本功能,接收和识别命令(接收CPU发来的Read、Format等15条)2)数据交换(CPU与控制器、控制器与CPU之间的数据交换)3)标识和报告设备的状态(就绪否)4)地址识别(各寄存器的地址)5)数据缓冲(接收主机传来的高速数据,然后在以低速传到I/O设备)6)差错控制,CPU与I/O接口之间是并行传输数据。I/O接口与设备之间是串行传输数据。,2.设备控制器的组成,图 6-2 设备控制器的组成,6.1.3 I/O通道*,1.I/O通道(I/O Channel)设备的引入,实际上,I/O通道是一种特殊的处理机。它具有执行I/O指令的能力,并通过执行通道(I/O)程序来控制I/O操作。但I/O通道又与一般的处理机不同,主要表现在以下两个方面:一是其指令类型单一,这是由于通道硬件比较简单,其所能执行的命令,主要局限于与I/O操作有关的指令;二是通道没有自己的内存,通道所执行的通道程序是放在主机的内存中的,换言之,是通道与CPU共享内存。,2.通道类型,1)字节多路通道(Byte Multiplexor Channel),图 5-3 字节多路通道的工作原理,以字节为传送单位,2)数组选择通道(Block Selector Channel),字节多路通道不适于连接高速设备,这推动了按数组方式进行数据传送的数组选择通道的形成。这种通道虽然可以连接多台高速设备,但由于它只含有一个分配型子通道,在一段时间内只能执行一道通道程序,控制一台设备进行数据传送,致使当某台设备占用了该通道后,便一直由它独占,即使是它无数据传送,通道被闲置,也不允许其它设备使用该通道,直至该设备传送完毕释放该通道。可见,这种通道的利用率很低。,以数组为传送单位,3)数组多路通道(Block Multiplexor Channel)数组选择通道虽有很高的传输速率,但它却每次只允许一个设备传输数据。数组多路通道是将数组选择通道传输速率高和字节多路通道能使各子通道(设备)分时并行操作的优点相结合而形成的一种新通道。它含有多个非分配型子通道,因而这种通道既具有很高的数据传输速率,又能获得令人满意的通道利用率。也正因此,才使该通道能被广泛地用于连接多台高、中速的外围设备,其数据传送是按数组方式进行的。,以数组为传送单位,3.“瓶颈”问题,图 5-4 单通路I/O系统,图 5-5 多通路I/O系统,总线系统,图 5-6 总线型I/O系统结构,6.2 I/O控制方式,DMA控制器的出现,使I/O方式在传输单位上发生了变化,即从以”字节”为单位的传输扩大到以“数据快”为单位进行传输,从而大大的改善了块设备的I/O性能。而通道的引入,又使对I/O操作的组织和数据的传送,都能独立的进行而无须CPU干涉。,1、程序I/O方式,在程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费。在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构,使I/O设备无法向CPU报告它已完成了一个字符的输入操作。,I/O操作由程序发起,并等待操作完成。数据的每次读写通过CPU。缺点:在外设进行数据处理时,CPU只能等待。,图 6-7 程序I/O和中断驱动方式的流程,2、中断驱动I/O控制方式,I/O操作由程序发起,在操作完成时(如数据可读或已经写入)由外设向CPU发出中断,通知该程序。数据的每次读写通过CPU。优点:在外设进行数据处理时,CPU不必等待,可以继续执行该程序或其他程序。缺点:CPU每次处理的数据量少(通常不超过几个字节),只适于数据传输率较低的设备。,3、直接存储器访问DMA I/O控制方式,该方式的特点是:数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块;所传送的数据是从设备直接送入内存的,或者相反;仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。可见,DMA方式较之中断驱动方式,又是成百倍地减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度。,DMA控制器的组成(了解),图 6-8 DMA控制器的组成,DMA控制器也有三部分组成:(1)主机与DMA控制器的接口;(2)DMA控制器与块设备的接口;(3)I/O控制逻辑;,3.DMA工作过程,图 6-9 DMA方式的工作流程,3.直接存储访问方式(DMA,Direct Memory Access),由程序设置DMA控制器中的若干寄存器值(如内存始址,传送字节数),然后发起I/O操作,而后者完成内存与外设的成批数据交换,在操作完成时由DMA控制器向CPU发出中断。优点:CPU只需干预I/O操作的开始和结束,而其中的一批数据读写无需CPU控制,适于高速设备。,4、I/O通道控制方式,I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。例如,当CPU要完成一组相关的读(或写)操作及有关控制时,只需向I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首址和要访问的I/O设备,通道接到该指令后,通过执行通道程序便可完成CPU指定的I/O任务。,2.通道程序cpu告诉 通道做什么和怎样去做,操作码。它规定了指令所执行的操作,如读。(2)内存地址。标明字符送入内存和从内存取出时的内存首址。(3)计数。表示本条指令所要读(或写)数据的字节数。(4)通道程序结束位P。用于表示通道程序是否结束。P=1表示本条指令是通道程序的最后一条指令。(5)记录结束标志R。R=0表示本通道指令与下一条通道指令所处理的数据同属一个记录,R=1表示这是处理某记录的最后一条指令。,通道是通过执行通道程序,并与设备控制器共同实现对I/O设备控制的。通道程序是由一系列的通道指令(或称为通道命令)所构成。通道指令与一般的机器指令不同,它的每条指令中包含下列诸信息;,DMA案例,1、嵌入式系统采用的处理器是TI公司的DM642。主频600MHz。2、可采用的方式有DMA、EDMA(扩展直接存取访问)、QDMA(快速直接存取访问),DMA,1、C6000系列DMA有4个独立的传输通道。2、每一个DMA通道都有一套寄存器完成传输控制,启动DMA之前,必须对它们进行初始化。(含使用的通道、数据源地址、数据传输的目的地址等)3、配置寄存器实现启动。,EDMA,1)DM642共有64个EDMA通道。每个通道都有一个事件与之关联,由这些事件来触发相应通道的传输。,EDMA控制寄存器,该事件能触发EDMA通道开始传输,2)、通道地址,给出通道各参数的地址,3)、EDMA的传输参数,1组EDMA传输参数的内部结构,总共有6个字,存储结构如下:,OPT,SRC,CNT,DST,IDX,LINK,01A00000h,通道0的各字地址,01A00004h,01A00008h,01A0000eh,01A00010h,01A00014h,OPT参数地址01A00000h,16,19,20,21,23,22,25,24,27,26,28,29,31,优先级000表紧急优先权,数据单元字长00表32位,01表16位,目的数据维数0表一维1表二维,源地址更新模式00表源地址不更改01增加10减少,源数据维数0表一维1表二维,目的地址更新模式00表源地址不更改01增加10减少,传输结束代码,SRC/DST,均为32位长度SRC 要搬移数据的源地址DST要搬移数据的目的地址地址应该由程序员指定#define CH8_SRC*(unsigned int*)0 x01a000c4#define CH8_DST*(unsigned int*)0 x01a000cc,CNT,ELE CNT数据单元计数 16bit无符号数该单元存放一帧(一维传输)或一个阵列(2-D)中的单元个数,FRM CNT帧数计数一次传输多少帧,CH8_CNT=0 x0001 0010;,一帧含有16个字节,一次传送一帧,IDX 32位长确定偏移量,FRM IDX确定下一帧的偏移地址,或者说相邻2帧之间的步幅(间距)单位:字节ELE IDX确定下一阵列(可以理解为数组)的偏移地址CH8_IDX=0 x0020 0000,相邻2帧之间步幅为32,由于采用1维传输,而此项是控制二维传输的,所以不设置此项,其实配置EDMA就是通道参数初始化,然后启动通道开始传输见下面案例:,#define ESRL*(unsigned int*)0 x01a0fffc#define ESRH*(unsigned int*)0 x01a0ffbc#define CCER*(unsigned int*)0 x01a0ffec/通道连接使能寄存器#define CH8_OPT*(unsigned int*)0 x01a000c0#define CH8_SRC*(unsigned int*)0 x01a000c4#define CH8_CNT*(unsigned int*)0 x01a000c8#define CH8_DST*(unsigned int*)0 x01a000cc#define CH8_IDX*(unsigned int*)0 x01a000d0#define CH8_RELOAD_LINK*(unsigned int*)0 x01a000d4,TEST_edma()/CH8_SRC=(unsigned int)src;/in;/(0 x80019220);CH8_DST=(unsigned int)dst;/(unsigned int)dst;0 x80000b60);CH8_CNT=0 x00010010;/最后一位数是几,一次便传送几个单元的数据 CH8_IDX=0 x00200000;CH8_OPT=0 x0da01100;/0da01100;/ESRL=ESRL|0 x00000100;CCER=CCER|0 x00000100;/,QDMA,使用2组寄存器进行控制。第一组定义了QDMA传输所需参数;第二组定义了5个寄存器,是第一组寄存器的“伪映射”,1、I/O控制可用哪几种方式实现?各有何优缺点?清华2、通过硬件和软件的扩充功能,把原来的独立设备改造成能为若干用户共享的设备,这种设备称为()。A、存储设备 b、系统设备 c、用户设备d、虚拟设备3、如果I/O设备与存储设备进行数据交换不经过CPU来完成,这种数据交换方式是()A、程序查询b、中断方式c、DMA方式d、无条件存取方式4、大多数低速设备都属于()设备。A、独占设备 b共享设备 c虚拟设备 d spool,d,c,a,6.3 缓 冲 管 理,6.3.1 缓冲的引入*,缓和CPU与I/O设备间速度不匹配的矛盾。(2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制。(见下图)(3)提高CPU和I/O设备之间的并行性。,设备管理中引入缓冲机制的主要原因是为了(1)(2)(3)。中科院计算所,图 6-10 利用缓冲寄存器实现缓冲,100微秒刷新一次,6.3.2 单缓冲和双缓冲,1.单缓冲(Single Buffer),图 6-11 单缓冲工作示意图,单缓冲,为什么对一块数据的处理时间为max(T,C)+M?,必须等,这段时间需要CPU和缓冲区同时参与,2.双缓冲(Double Buffer),图 6-12 双缓冲工作示意图,另一个缓冲区,CPU和缓冲1,只CPU参与,双缓冲,为什么对一块数据的处理时间为max(T,C)?,图 6-13 双机通信时缓冲区的设置,案例,摄像头,数字图像,视频压缩,Internet,个人计算机,模拟图像,A/D转换,个人计算机,RTP、UDP TCPIP,D1:720 x576x2,案例,摄像头,数字图像2,视频压缩,Internet,个人计算机,模拟图像,个人计算机,RTP、UDP TCPIP,数字图像1,数字图像3,压缩后代码1,压缩后代码2,6.3.3 循环缓冲,1.循环缓冲的组成(多个缓冲区,三个指针),图 6-14 循环缓冲,计算进程下一个可用的缓冲区,相当于消费者进程,空缓冲区,相当于生产者进程,满,当前正在运行的进程,2.循环缓冲区的使用(了解),Getbuf过程。计算进程调用,Nextg供使用,然后下移,同时变C 输入进程调用,Nexti供调用,然后下移(2)Releasebuf过程。计算进程调用完,CR 输入进程调用完,RG,计算进程和输入进程可利用下面2个过程使用缓冲区,3.进程同步(并行运行),Nexti指针追赶上Nextg指针。(2)Nextg指针追赶上Nexti指针。,6.3.4 缓冲池(Buffer Pool),1.缓冲池的组成 对于既可用于输入又可用于输出的公用缓冲池,其中至少应含有以下三种类型的缓冲区:空(闲)缓冲区;装满输入数据的缓冲区;装满输出数据的缓冲区。为了管理上的方便,可将相同类型的缓冲区链成一个队列,于是可形成以下三个队列:(1)空缓冲队列emq。(2)输入队列inq。(3)输出队列outq。,还需四种工作缓冲区:收容输入数据、提取输入数据、收容输出数据、提取输出数据的工作缓冲区,2.Getbuf过程和Putbuf过程,Procedure Getbuf(type)begin Wait(RS(type);Wait(MS(type);B(number):=Takebuf(type);Signal(MS(type);end Procedure Putbuf(type,number)begin Wait(MS(type);Addbuf(type,number);Signal(MS(type);Signal(RS(type);end,申请缓冲区资源,释放缓冲区资源,加1操作,保证只有一个进程访问缓冲区队列,保证只有一个进程访问缓冲区队列,3.缓冲区的工作方式(了解),图 6-15 缓冲区的工作方式,缓冲技术是借用外存储器的一部分区域做为缓冲池。判断对错缓冲技术中的缓冲池在()中。为了使多个进程能有效的同时处理输入输出,最好使用()结构的缓冲技术。a、缓冲池 b闭缓冲区环c单缓冲区d双缓冲区,主存,a,6.4 设备分配,6.4.1 设备分配数据结构6.4.2 设备分配原则6.4.3 假脱机技术,返回,由于外设资源的有限,需解决进程间的外设共享问题,以提高外设资源的利用率。设备分配是对进程使用外设过程的管理。这里有两种作法:1)在进程间切换使用外设,如键盘和鼠标;2)通过一个虚拟设备把外设与应用进程隔开,只由虚拟设备来使用设备。,6.4.1 设备分配数据结构,设备控制表(DCT,Device Control Table):每个设备一张,描述设备特性和状态。反映设备的特性、设备和控制器的连接情况。DCT的内容主要包括:设备标识:用来区别不同的设备;设备类型:反映设备的特性;如:块设备或字符设备;设备配置:I/O地址等;设备状态:工作或空闲状态;等待队列:等待使用该设备的进程队列;,返回,6.4.1 设备分配中的数据结构,1.设备控制表DCT,图 6-16 设备控制表,系统设备表(SDT,System Device Table):系统内一张,反映系统中设备资源的状态,记录所有设备的状态及其设备控制表的入口。SDT表项的主要组成:DCT指针:指向相应设备的DCT;设备使用进程标识:正在使用该设备的进程标识;DCT信息:为引用方便而保存的DCT信息,如:设备标识、设备类型等;控制器控制表(COCT,COntroller Control Table):每个设备控制器一张,描述I/O控制器的配置和状态。如DMA控制器所占用的中断号、DMA数据通道的分配。通道控制表(CHCT,CHannel Control Table):每个通道一张,描述通道工作状态。,返回,8.3.2 设备分配原则,与设备分配有关的设备属性:独享设备:打印机等(一直使用完才释放)。;共享设备:磁盘、网卡等;虚拟设备:一台物理设备虚拟成多台虚拟设备,合理调用设备分配方式:各有优缺点静态分配:在进程刚创建时分配,在进程退出时释放;不会出现死锁;设备利用率不高;动态分配:在进程执行过程中根据需要分配,使用结束后释放;需要考虑死锁问题有利于提高设备利用率,返回,设备分配的原则是合理使用外设(公平和避免死锁),提高设备利用率。,动态分配策略:针对特定的设备采用特定的分配策略。先来先服务(FCFS):按I/O请求的先后顺序,排成I/O请求命令队列;按FCFS分配设备;基于优先级:依据进程的优先级,指定I/O请求的优先级,排成不同优先级队列;按优先级高低分配设备;,6.4.3 设备独立性,1.设备独立性(Device Independence)的概念设备独立性,也称为设备无关性*。其基本含义是:应用程序独立于具体使用的物理设备。为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称。因此,系统须具有将逻辑设备名称转换为某物理设备名称的功能,这非常类似于存储器管理中所介绍的逻辑地址和物理地址的概念。,在实现了设备独立性的功能后,可带来以下两方面的好处。1)设备分配时的灵活性 2)易于实现I/O重定向,2.设备独立性软件,1)执行所有设备的公有操作 这些公有操作包括:对独立设备的分配与回收;将逻辑设备名映射为物理设备名,进一步可以找到相应物理设备的驱动程序;对设备进行保护,禁止用户直接访问设备;缓冲管理,即对字符设备和块设备的缓冲区进行有效的管理,以提高I/O的效率;差错控制。由于在I/O操作中的绝大多数错误都与设备无关,故主要由设备驱动程序处理,而设备独立性软件只处理那些设备驱动程序无法处理的错误。,2)向用户层(或文件层)软件提供统一接口 无论何种设备,它们向用户所提供的接口应该是相同的。例如,对各种设备的读操作,在应用程序中都使用read;而对各种设备的写操作,也都使用write。,6.4.5 SPOOLing技术*,通过SPOOLing技术可将一台物理I/O设备虚拟为多台I/O设备,同样允许多个用户共享一台物理I/O设备。,SPOOLing 假脱机技术,引入:在多道批处理系统中,专门利用一道程序(SPOOLing程序)来完成对设备的I/O操作。无需使用外围I/O处理机。,返回,利用假脱机技术(SPOOLing,Simultaneous Peripheral Operation On Line,也称为虚拟设备技术)可把独享设备转变成具有共享特征的虚拟设备,从而提高设备利用率。,假脱机的原理:SPOOLing程序和外设进行数据交换,可以称为“实际I/O”。一方面,SPOOLing程序预先从外设输入数据并加以缓冲,在以后需要的时候输入到应用程序;另一方面,SPOOLing程序接受应用程序的输出数据并加以缓冲,在以后适当的时候输出到外设。在SPOOLing程序中,需要管理两级缓冲区:内存缓冲区和快速外存上的缓冲池,后者可以暂存多批I/O操作的较多数据。应用程序进行I/O操作时,只是和SPOOLing程序交换数据,可以称为“虚拟I/O”。这时虚拟I/O实际上是从SPOOLing程序的缓冲池中读出数据或把数据送入缓冲池,而不是跟实际的外设进行I/O操作。,2.SPOOLing系统的组成,1、输入井和输出井 这是在磁盘上开辟的两个大存储空间。输入井是模拟脱机输入时的磁盘,用于收容IO设备输入的数据。输出井是模拟脱机输出时的磁盘,用于收容用户程序的输出数据。,2、输入缓冲区和输出缓冲区 在内存中要开辟两个缓冲区:输入缓冲区和输出缓冲区;输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井;输出缓冲区用于暂存从输出井送来的数据,以后再传送给输出设备。,3、输入进程SPi和输出进程SPo:进程SPi模拟脱机输入时的外围控制机,将用户要求的数据从输入机,通过输入缓冲区再送到输入井;当CPU需要输入数据时,直接从输入井读入内存。SPo进程模拟脱机输出时的外围控制机,把用户要求输出的数据,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据,经过输出缓冲区送到输出设备上。,图 6-19 SPOOLing系统的组成,3.共享打印机,共享打印机技术已被广泛地用于多用户系统和局域网络中。当用户进程请求打印输出时,SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给该用户进程,而只为它做两件事:由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中;输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到请求打印队列上。,4.SPOOLing系统的特点*,提高了I/O的速度。应用程序的虚拟I/O比实际I/O速度提高,缩短应用程序的执行时间。另一方面,程序的虚拟I/O操作时间和实际I/O操作时间分离开来。(2)将独占设备改造为共享设备。(3)实现了虚拟设备功能。,举例:打印机设备和可由打印机管理器管理的打印作业队列。如:Windows NT中,应用程序直接向针式打印机输出需要15分钟,而向打印作业队列输出只需要1分钟,此后用户可以关闭应用程序而转入其他工作,在以后适当的时候由打印机管理器完成15分钟的打印输出而无需用户干预。,什么是虚拟设备?实现虚拟设备的关键技术是什么?虚拟设备是通过某种虚拟技术,将一台物理设备变换成若干台逻辑设备,从而实现多个用户对该物理设备的同时共享。由于多台逻辑设备事实上不存在,而只是给用户的一种感觉,因此被称作虚拟设备。常通过在可共享的、高速的磁盘上开辟两个大的存储空间(即输入井和输出井)以及预输入、缓冲输出技术来实现。预输入和缓输出可通过脱机和假脱机技术实现,假脱机是目前使用最广泛的虚拟设备技术。,习题,1、Spooling技术提高了()利用率。A、独占设备 b、共享设备 c。文件 d、主存储器2、在操作系统中,()指的是一种硬件机制。A、通道技术 b、缓冲池 c、Spooling技术 d、内存覆盖技术3、在操作系统中,用户在使用I/O设备时,通常采用()。A、物理设备名 b、逻辑设备名 c、虚拟设备名 d设备牌号、,a,a,b,6.5 设备控制,6.5.1 设备的控制过程6.5.2 设备控制过程的实现方式6.5.3 设备驱动程序,返回,6.5.1 设备的控制过程,转换:将抽象的命令转换为具体的一定次序的指令合法性检查:检查I/O操作请求的合法性可用性检查:检查控制器和设备的状态,判断是否可用参数设置:设置控制器和设备的参数,包括构造必要的通道程序启动I/O:向控制器或设备发起I/O操作中断处理:提供必要的中断处理例程,以便I/O完成时调用,返回,依据用户的控制命令对外设进行控制,并返回结果。控制过程可分为以下6步:,6.5.2 设备控制过程的实现方式,作为应用进程的一部分执行:与程序控制I/O相对应,难以对外设发出的中断作实时响应作为系统进程执行:每类设备一个进程,或整个系统一个进程处理各类设备不设进程,作为OS核心中的设备驱动程序,返回,6.5.3 设备驱动程序,中转数据和控制:不是数据和控制的源端和目的端(应用程序和设备)与硬件特性密切相关:通常由硬件厂商提供。向上屏蔽设备细节:不同类型设备通常其设备驱动程序接口不同,同类设备的接口相同。因此,同类设备的不同型号,只要更换设备驱动程序则可由OS使用。,返回,驱动程序是I/O处理功能的低级系统例程。它具有如下特征:,设备驱动程序的处理过程主要任务是启动设备,将抽象要求转换为具体要求 2.检查I/O请求的合法性 3.读出和检查设备的状态 4.传送必要的参数 5.工作方式的设置 6.启动I/O设备,6.6 磁盘设备管理,6.6.1 磁盘I/O访问时间的组成6.6.2 磁盘I/O调度策略6.6.3 磁盘缓存置换算法,返回,CPU和内存的访问速度比磁盘要快若干个数量级,磁盘系统的性能对整个系统的性能有重要影响,磁盘设备管理的目标就是提高磁盘系统的性能。,6.6.1 磁盘I/O访问时间的组成,柱面定位时间:磁头移动到指定柱面的机械运动时间;旋转延迟时间:磁盘旋转到指定扇区的机械运动时间;它与磁盘转速相关,如:软盘转速可为600rpm(每分钟转速),硬盘可为7200rpm。数据传送时间:从指定扇区读写数据的时间。,返回,由于柱面定位时间在访问时间中占主要部分,合理组成磁盘数据的存储位置可提高磁盘I/O性能。例子:读一个128KB大小的文件:(1)文件由8个连续磁道(每个磁道32个扇区)上的256个扇区构成:20ms+(8.3ms+16.7ms)*8=220ms;其中,柱面定位时间为20ms,旋转延迟时间为8.3ms,32扇区数据传送时间为16.7ms;(2)文件由256个随机分布的扇区构成:(20ms+8.3ms+0.5ms)*256=7373ms;其中,1扇区数据传送时间为0.5ms;随机分布时的访问时间为连续分布时的33.5倍。,6.6.2 磁盘I/O调度策略,先进先出算法最短寻道时间优先算法后进先出算法扫描(SCAN)算法循环扫描(C-SCAN)算法N步扫描(N-step-SCAN)算法双队列扫描(FSCAN)算法,返回,来自不同进程的磁盘I/O请求构成一个随机分布的请求队列。磁盘I/O调度的主要目标就是减少请求队列对应的平均柱面定位时间。,1.先来先服务FCFS(First-Come,First Served),图 6-23 FCFS调度算法,下列请求序列等待访问磁盘:55、58、39、18、90、160、150、38、184,2.最短寻道时间优先SSTF(Shortest Seek Time First),图 6-24 SSTF调度算法,下列请求序列等待访问磁盘:55、58、39、18、90、160、150、38、184,3.扫描(SCAN)算法,1)进程“饥饿”现象,SSTF算法虽然能获得较好的寻道性能,但却可能导致某个进程发生“饥饿”(Starvation)现象。因为只要不断有新进程的请求到达,且其所要访问的磁道与磁头当前所在磁道的距离较近,这种新进程的I/O请求必须优先满足。对SSTF算法略加修改后所形成的SCAN算法,即可防止老进程出现“饥饿”现象。,2)SCAN算法,图 6-25 SCAN调度算法示例,本算法不仅考虑到预访问磁道和当前磁道之间的距离,更优先考虑的是磁头当前的移动方向。,又称电梯调度算法,下列请求序列等待访问磁盘:55、58、39、18、90、160、150、38、184,4.循环扫描(CSCAN)算法,图 6-26 CSCAN调度算法示例,只按一个方向走,下列请求序列等待访问磁盘:55、58、39、18、90、160、150、38、184,假定在某移动臂磁盘上,刚刚处理了访问75号柱面的请求,目前正在80号柱面上读信息,并有下列请求序列等待访问磁盘:请求序列:1 2 3 4 5 6 7 8预访问的柱面号:160 40 190 188 90 58 32 102试用;FCFS、最短查找时间优先算法,电梯调度算法(扫描算法),循环扫描算法,分别排出实际处理上述请求的次序。,电梯调度算法 SCAN:5、8、1、4、3、6、2、7,最短查找时间优先算法:5、8、6、2、7、1、4、3,先来先:1、2、3、4、5、6、7、8,循环扫描算法CSCAN:5、8、1、4、3、7、2、6,算一下平均寻道长度。,6.6.3 磁盘高速缓存(Disk Cache)*,1.磁盘高速缓存的形式,是指利用内存中的存储空间,来暂存从磁盘中读出的一系列盘块中的信息。因此,这里的高速缓存是一组在逻辑上属于磁盘,而物理上是驻留在内存中的盘块。高速缓存在内存中可分成两种形式。第一种是在内存中开辟一个单独的存储空间来作为磁盘高速缓存,其大小是固定的,不会受应用程序多少的影响;第二种是把所有未利用的内存空间变为一个缓冲池,供请求分页系统和磁盘I/O时(作为磁盘高速缓存)共享。此时高速缓存的大小,显然不再是固定的。当磁盘I/O的频繁程度较高时,该缓冲池可能包含更多的内存空间;而在应用程序运行得较多时,该缓冲池可能只剩下较少的内存空间。,2.数据交付方式,系统可以采取两种方式,将数据交付给请求进程:(1)数据交付。这是直接将高速缓存中的数据,传送到请求者进程的内存工作区中。(2)指针交付。只将指向高速缓存中某区域的指针,交付给请求者进程。后一种方式由于所传送的数据量少,因而节省了数据从磁盘高速缓存存储空间到进程的内存工作区的时间。,3.置换算法,由于请求调页中的联想存储器与高速缓存(磁盘I/O中)的工作情况不同,因而使得在置换算法中所应考虑的问题也有所差异。因此,现在不少系统在设计其高速缓存的置换算法时,除了考虑到最近最久未使用这一原则外,还考虑了以下几点:(1)访问频率。(2)可预见性。(3)数据的一致性。,4.周期性地写回磁盘,在UNIX系统中专门增设了一个修改(update)程序,使之在后台运行,该程序周期性地调用一个系统调用SYNC。该调用的主要功能是强制性地将所有在高速缓存中已修改的盘块数据写回磁盘。一般是把两次调用SYNC的时间间隔定为30 s。这样,因系统故障所造成的工作损失不会超过30 s的劳动量。而在MS-DOS中所采用的方法是:只要高速缓存中的某盘块数据被修改,便立即将它写回磁盘,并将这种高速缓存称为“写穿透、高速缓存”(write-through cache)。MS-DOS所采用的写回方式,几乎不会造成数据的丢失,但须频繁地启动磁盘。,1、引入高速缓冲的目的是“改善CPU和I/O设备之间速度不匹配的情况”。上交大、清华、华中科大2、何为磁盘高速缓存?说明它为啥能提高磁盘的I/O速度?指利用内存中的存储空间,来暂存从磁盘中读出的一系列盘块中的信息。因此,这里的高速缓存是一组在逻辑上属于磁盘,而物理上是驻留在内存中的盘块。操作系统通过开辟一块缓冲区来高速缓存最近被使用过的磁盘块的数据。可以通过预先读和延迟写技术利用磁盘缓冲以提高磁盘I/O速度。3、CPU输出数据的速度远远高于打印机的速度,为解决这一矛盾,可以采用()。A、并行技术b、缓冲技术 c、虚存技术 d、覆盖技术,b,Windows NT的设备管理,返回,1.NT的I/O系统结构,I/O子系统:实现文件化的I/O函数;通常的打开、关闭和读写函数;异步I/O:应用进程在发出I/O请求后,不需等待I/O完成,可继续其它工作;映射文件I/O:把文件作为进程虚拟空间的一部分进行直接访问;快速I/O:不通过I/O管理器,直接向驱动程序发出I/O请求;I/O管理器:依据抽象I/O操作创建和传送I/O请求包(IRP);核心态设备驱动程序:将I/O请求包转化为对硬件设备的特定控制请求;驱动程序支持例程:供设备驱动程序调用,以完成I/O请求;硬件抽象层I/O访问例程:隔离驱动程序与硬件平台,以提高可移植性(同体系结构上的二进制可移植和NT支持平台间的源代码可移植);,2.核心态驱动程序的类型,文件系统驱动程序:实现文件I/O请求到物理设备I/O请求的转换;文件系统过滤器驱动程序:截取文件系统驱动程序产生的I/O请求,执行另外处理,并发出相应的低层I/O请求;如:容错磁盘;类驱动程序(class driver):实现对特定类型设备的I/O请求处理;如:磁盘、磁带、光盘等;端口驱动程序(port driver):实现对特定类型I/O端口的I/O请求处理;如:SCSI接口类型;小端口驱动程序:把对端口类型的I/O请求映射到适配器类型;硬件设备驱动程序(hardware device driver):直接控制和访问硬件设备;,NT采用分层驱动程序的思想,只有最底层的硬件设备驱动程序访问硬件设备,高层驱动程序都是进行高级I/O请求到低级I/O请求的转换工作;各层驱动程序间的I/O请求通过I/O管理器进行。,2.设备驱动程序的组成,初始化例程:I/O管理器在加载驱动程序时,利用初始化例程创建系统对象;调度例程集:实现设备的各种I/O操作;如:打开、关闭、读取、写入等;启动I/O例程:初始化与设备间的数据传输;中断服务例程(ISR):设备(软)中断时的调用例程;要求快速简单;中断服务延迟过程调用(DPC)例程:以内核线程方式,执行ISR执行后的中断处理工作;,设备驱动程序由一组处理I/O请求的不同阶段的例程组成。,