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