第十五讲设备管理、磁盘设备目的与要求:理解设备管理子系统的层次,功能及技术、了解磁盘设备。重点与难点:层次结构;设备驱动程序;缓冲技术;磁盘调度的方法;盘阵选择。作业:6,8,11,16,186.2.2输入输出层次结构通常,操作系统将设备管理系统划分并组织成三个层次:•用户层I/O•设备无关的I/O•设备驱动及中断处理用户层I/O设备驱动及中断处理硬件系统调用接口,设备无关的操作系统软件用户进程用户层I/O设备无关的I/O设备驱动及中断处理硬件设备管理子系统逻辑结构图核心态运行用户程序标准C库I/O函数内核总控系统调用处理总控Write处理(文件系统、TCP/IP)磁盘控制器/网卡盘/网卡中断处理用户态核心态异步调用接口磁盘驱动程序/网卡驱动系统调用各模块关系图系统调用接口用户程序一、用户层I/O这一层与设备的控制细节无关,不直接与设备打交道。它将设备(或在设备上的逻辑对象)看作逻辑资源,为用户进程提供各类I/O函数。用户以设备标识符和一些简单的函数来使用设备,如打开、关闭、读、写等。如C库中的函数fopen();fread();fwrite();fclose()等。二、设备无关的I/O这一层的基本功能:执行适用于所有设备的公共I/O功能,并向其上层提供统一的系统调用接口。主要任务:•设备命名及与设备驱动程序的映射。在UNIX中,如/dev/tty00唯一地确定了一个inode数据结构,其中包含了主设备号,通过主设备号可以找到相应的设备驱动程序。•设备访问保护。•分配及释放独占型设备。•设备I/O数据缓冲机制。•文件系统功能、TCP/IP协议等(支持设备上的逻辑存储、通讯对象)三、设备驱动与中断处理•设备驱动程序包括了所有与设备相关的代码,其功能是从与设备无关的软件中接收I/O的请求,排入请求队列或执行之。•中断处理当进程进行I/O操作时,将其阻塞至I/O操作结束并发生中断。中断发生时,由中断处理程序启动请求排队的下一请求(如果有)并解除等I/O进程的阻塞状态,使其能够继续执行。6.2.3.缓冲技术一、单缓冲当用户进程发出I/O请求时,操作系统在主存的系统空间为该操作分配一个缓冲区,可以实现预读和滞后写。在进程数据区与外设之间设立缓冲区可以改善进程运行速度与I/O传输速度之间的速差矛盾。二、双缓冲可以实现用户数据区—缓冲区之间交换数据和缓冲区—外设之间交换数据并行。三、循环缓冲引入系统缓冲池,采用有限缓冲区的生产者/消费者模型对缓冲池中的缓冲区进行循环使用。缓冲区结合预读和滞后写技术对具有重复性及阵发性I/O进程提高I/O速度很有帮助。缓冲A缓冲G缓冲E缓冲C缓冲B缓冲D缓冲F缓冲HHash表方式的设备缓冲队列空闲队列头缓冲区管理示例6.2.4.设备驱动程序一.设备驱动程序接口函数•驱动程序初始化函数:这个函数是为了使驱动程序其它函数能被上层正常调用,而做一些针对驱动程序本身的初始化工作。如向操作系统登记该驱动程序的接口函数,该初始化函数在系统启动时或驱动程序安装入内核时执行。•驱动程序卸载函数:是驱动程序初始化函数的逆过程,在支持驱动程序可动态加载卸载的系统中才需要。•申请设备函数:该函数申请一个驱动程序所管理的设备,按照设备特性进行独占式占用或者分时共享式占用,如果是独占式申请成功还应该对设备做初始化工作。•释放设备函数:是申请设备函数的逆过程。•I/O操作函数:这个函数实现对设备的I/O。如果对独占型设备,包含了启动I/O的指令,对分时共享型设备,该函数通常将I/O请求形成一个请求包,将其排到设备请求队列,如果请求队列空,则直接启动设备。•中断处理函数:这个函数在设备I/O完成时向CPU发中断后被调用。该函数对I/O完成作善后处理,一般是找到等待刚完成I/O请求的阻塞进程,将其就绪,使其能进一步作后续工作。如果存在I/O请求队列,则启动下一个I/O请求。5.设备管理有关的数据结构•描述设备、控制器等部件的表格。系统中常常为每一个部件、每一台设备分别设置一张表格,常称为部件控制块或设备表。这类表格具体描述设备的类型、标识符、进行状态,以及当前使用者的进程标识符等。•建立同类资源的队列。系统为了方便对I/O设备的分配管理,通常在设备表的基础上通过指针将相同物理属性的设备联成队列(称设备队列)。•面向进程I/O请求的动态数据结构。每当进程发出块I/O请求时,系统建立一张表格(称I/O请求包)。将此次I/O请求的参数填入表中,同时也将该I/O有关的系统缓冲区地址等信息填入表中。I/O请求包随着I/O的完成而删除。•建立I/O队列。如请求包队列。设备表设备表设备表请求包请求包设备管理有关数据结构关系6.3存储设备6.3.1.常见存储外设•磁盘•数据组织(一个磁盘有多个盘面组成,盘面有同心圆磁道组成,磁道由扇区组成,扇区为基本传输单位)•物理特性(单磁头,多磁头)存取装置主轴动臂盘片柱面磁道读写头多磁头活动头盘示意图•光学存储设备•CD-ROM•CD-R,CD-RW6.3.2.磁盘调度磁盘地址:设备号+柱面号+盘面号+扇区号读写一次磁盘信息所需的时间可分解为:寻找时间、延迟时间、传输时间为提高磁盘传输效率,软件应着重考虑减少寻找时间和延迟时间一、减少寻找时间的方法减少寻找时间是提高磁盘传输效率的关键。因为“寻找时间”在几十毫秒时间量级。操作系统磁盘驱动程序可以通过合理调度多道进程对磁盘的访问请求顺序,达到减少磁盘平均服务时间的目的。调度策略:•FCFS(FirstComeFirstServed)•SSTF(ShortestSeekTimeFirst)•SCAN调度(电梯调度法)•C-SCAN调度(一个方向响应请求)•LOOK调度、C-LOOK调度(是scan和c-scan的改进)二、减少延迟时间的方法一般常将盘面扇区交替编号;磁盘迭中不同盘面错开命名。041573627041362537046251637025146.3.3.盘阵•通过冗余提高可靠性:如建立镜像盘。•通过并行性提高性能:如将原来在一个物理盘连续的数据分条分布到多盘。aAA为a的备份abcdefghijklmnopqrstaeimqbfjnrcgkosdhlpt将数据分布到多个盘中RAID级别•RAID级别0:指用到块级条带化的磁盘阵列。•RAID级别1:指磁盘镜像。冗余(a)RAID0:无冗余条带化(b)RAID1:镜像磁盘C•RAID级别0+1:是指RAID级别0和1的结合。RAID0提供性能,RAID1提供可靠性。它通常用于性能和可靠性都很重要的环境中。•RAID级别1+0,其中磁盘被镜像成对,然后最后所得到的镜像对被条带化。这种RAID比起RAID0+1有理论上的优势。例如,如果在RAID0+1中单独一个磁盘失效,其他盘上的对应条带都不可访问。对于RAID1+0中的一个磁盘失效,这个单独的磁盘不可用,但它的镜像盘仍然可用。•RAID级别2:RAID级别2也叫做存储类型校验码(ECC)结构。单个位的错误被存储器系统检测出来。错误校验方案存储两个或更多额外的位,可在单个位被破坏时重建数据。•RAID级别3:称为bit-interleaved奇偶校验结构,在级别2上进行了改善,磁盘控制器可以检测扇区是否被正确读,因此一个单独的奇偶校验位可用来进行错误校验,也可以用于检测。•RAID级别4:称为block-interleaved奇偶校验结构,运用块级条带化,像在RAID0中一样,此外,对于N个磁盘上的对应块,在另外单独的磁盘上保存奇偶校验块。•RAID级别5:称为block-interleaved分布式奇偶校验,与级别4不同在于,把数据和奇偶校验分布到所有的N+1个磁盘上,而不是把数据存储在N个磁盘上,把奇偶校验值存储在另一个磁盘上。RAID5避免了在RAID4中可能出现的过度使用单独一个奇偶校验磁盘的情况。•RAID级别6:RAID级别6,也叫做P+Q冗余模式,很像RAID级别5,但存储了额外的冗余信息来防止多块磁盘失效。这里不用奇偶校验,而是用到错误校验码,例如Reed-Solomon码。