操作系统教程—Linux实例分析 孟庆昌 第6章 设备管理.ppt_第1页
操作系统教程—Linux实例分析 孟庆昌 第6章 设备管理.ppt_第2页
操作系统教程—Linux实例分析 孟庆昌 第6章 设备管理.ppt_第3页
操作系统教程—Linux实例分析 孟庆昌 第6章 设备管理.ppt_第4页
操作系统教程—Linux实例分析 孟庆昌 第6章 设备管理.ppt_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章设备管理 6 1概述6 2缓冲技术 Buffering 6 3设备分配技术6 4I O软件构造原则6 5磁盘调度和管理6 6Linux系统的设备管理习题 6 1概述 6 1 1设备分类1 存储设备存储设备也称为外存或后备存储器 辅助存储器 它们主要是计算机用来存储信息的设备 虽然它们的存储速度较内存慢 但比内存容量大得多 价格也相对便宜 存储设备通常包括磁盘 CD ROM 磁带等 特别是磁盘 在现代计算机系统中得到广泛应用 多数处理过程都是基于磁盘系统的 磁盘提供了基本的联机信息 程序和数据 的存储 大多数程序 像编译程序 汇编程序 编辑程序 格式化程序以及用户程序 等等 都是以文件形式存放在磁盘上 在使用时才调入内存的 在这类设备上存储的信息 在物理上往往是按字符块组织的 每一块有固定的大小 并且有自己的磁盘地址 常用块的大小从512字节到32768字节 2 输入 输出设备它们又可分为输入和输出两类 输入设备是计算机用来接受来自外部世界信息的设备 例如终端键盘输入 卡片输入机 鼠标等 输出设备是将计算机加工处理好的信息送向外部世界的设备 例如终端屏幕显示或打印输出部分 激光打印机 卡片输出机等 而modem设备既可以输入 也可以输出 6 1 2设备管理的功能设备的种类繁多 而其物理特性和使用方式各不相同 所以设备管理程序在整个操作系统中占很大比重 设备管理要达到的目标主要是 1 向用户提供使用方便而且独立于设备的界面 2 提高各种外设的使用效率 3 在设计上 对各种外设尽可能采用统一的管理方法 使得设备管理系统简练 可靠且易于维护 为了实现上述目标 操作系统的I O管理子系统主要实现如下功能 1 监视设备状态 2 进行设备分配 3 完成I O操作 4 缓冲管理与地址转换 6 1 3通道技术1 输入 输出系统结构比较典型的输入 输出系统具有四级结构 内存 通道 控制器和外部设备 如图6 1所示 外部设备通常由机械和电子两部分组成 由于许多设备往往不是同时使用的 因此为降低成本常将电子部分从设备中独立出来构成一个部件 称为控制器 一个控制器可交替地控制几台同类设备 图6 1I O系统四级结构 2 通道的类型虽然各种I O通道的基本功能是相同的 但其形式和规模却相差很大 有的很简单 有的甚至用CPU作为I O通道 根据信息交换的方式 通道可以分成三种类型 字节多路通道 选择通道和成组多路通道 1 字节多路通道 字节多路通道以字节作为信息输送的单位 它往往服务于多台低速的I O设备 例如卡片输入机 打印机等 2 选择通道 选择通道在同一时间里只能为一台设备服务 能连续地传输一批数据 故传输速率很高 3 成组多路通道 成组多路通道结合了字节多路通道分时操作和选择通道高速传送的优点 被广泛用于连接高速和中速的设备 图6 2中描述了IBM370系统的结构 它包括了上述三种类型的通道 图6 2IBM370系统结构 6 1 4设备控制器在大多数微型机和小型机中都使用单总线实现CPU与控制器之间的通信 如图6 3所示 控制器是I O设备的电子部分 它协调和控制一台或多台I O设备的操作 并实现设备操作与整个系统操作的同步 在小型机和微型机上 控制器往往以印刷电路卡的形式插入计算机中 很多控制器可以管理2台 4台甚至8台同样的设备 操作系统总是与控制器打交道 而不是与设备直接作用 图6 3利用总线连接CPU 内存 控制器和I O设备 6 2缓冲技术 Buffering 6 2 1缓冲技术的引入计算机系统中各个部件间速度的差异是很大的 CPU的速度是以微秒甚至毫微秒量级计算的 而外设一般的处理速度是以毫秒甚至秒量级计算的 在不同时刻 系统中各部分的负荷也常常很不均衡 缓冲技术同样适用于输出的情况 CPU把产生的记录放入缓冲区 输出设备从中取出来输出它们 实际上 缓冲区不仅限于CPU和I O设备之间 凡是数据到达速率和离去速率不同的地方都可设置缓冲区 6 2 2缓冲区的设置1 单缓冲如果数据到达率与离去率相差很大 则可采用单缓冲方式 2 双缓冲当信息的输入和输出速率相同 或相差不大 时 可利用双缓冲区 实现二者的并行 如图6 4所示 3 多缓冲对于阵发性的输入 输出 双缓冲区往往不够使用 并且不能获得令人满意的CPU和I O设备的并行操作 图6 4双缓冲工作示例 6 3设备分配技术 6 3 1设备分配技术1 与设备分配相关的因素各种设备是系统掌管的资源 在一般系统中 进程个数往往多于设备数 从而引起进程对设备的竞争 1 I O设备的固有属性 2 系统所采用的分配算法 3 设备分配应防止死锁发生 4 用户程序与实际使用的物理设备无关 2 设备分配技术根据设备的使用性质可将设备分为独占设备 共享设备和虚拟设备三种 1 独占设备是不能被多个进程同时共用的设备 即在一段时间内 该设备只允许一个进程独占 2 共享设备是可由若干个进程同时共享的设备 这类设备具有高速 大容量 可直接存取等特点 例如磁盘机 3 虚拟设备是利用某种技术把独占设备改造成可由多个进程共享的设备 针对这三种设备采用三种分配技术 独占分配 共享分配和虚拟分配 1 独占分配独占分配技术是把独占设备固定地分配给一个进程 直至该进程完成I O操作并释放它为止 2 共享分配共享分配技术通常适用于高速 大容量的直接存取存储设备 如磁盘机和可读写CD ROM等 这类设备就是共享设备 3 虚拟分配虚拟分配技术往往是利用共享设备去模拟独占设备 从而使独占设备成为可共享的 快速I O的设备 3 设备分配算法设备分配算法就是按照什么原则把设备分给进程 对设备的分配算法与进程的调度算法有相似之处 但比较简单 常用的算法有先来先服务和优先级高的优先服务 1 先来先服务当有多个进程对同一设备提出I O请求时 按照进程对设备提出请求的先后次序 将这些进程排成一个设备请求队列 2 优先级高的优先服务这种算法的设备I O请求队列按请求I O操作的进程优先级的高低排列 高优先级进程排在设备队列前面 低优先级进程排在后面 6 3 2SPOOLing系统脱机方式是这样的 用一台专用的外围计算机去高速地读卡片 并把相应的信息记录在磁带上 外围机可以使用两台或多台卡片输入机 这种技术多用于早期的批处理系统 虽然它解决了慢速外设与快速主机的匹配问题 但是存在很多缺点 主要是 需要人工干预 产生人工错误的机会多 且效率低 周转时间慢 无法实现优先级调度 图6 5SPOOLing系统 6 4I O软件构造原则 6 4 1I O软件目标设计I O软件的目标主要有四个方面 第一是与设备无关性 这是关键概念 它希望所编写的用户程序既可在软盘文件系统中使用 又可在硬盘文件系统中使用 就是说 用户程序应与实际使用的物理设备无关 由操作系统考虑因实际设备不同而需要使用不同的设备驱动程序等问题 与设备无关性的实现 首先要有统一命名 第二是出错处理 第三是同步 封锁 传输与异步 中断驱动 传输 第四是对共享设备与独占设备的管理 为了实现这些目标 可把I O软件构成分为如下四个层次 如图6 6所示 1 中断处理程序 2 设备驱动程序 3 与设备无关的操作系统软件 4 用户层I O软件 图6 6I O软件构成分为如下四个层次图 6 4 2中断处理程序中断处理程序在I O软件系统的最底层 当输入就绪 输出完成或者出错时 设备控制器就向CPU发出中断信号 CPU接到中断请求后 如果中断优先级高于运行程序的优先级 则响应中断 然后把控制权转交给中断处理程序 中断处理程序分析中断原因 并依据中断原因调用相应的处理程序 6 4 3设备驱动程序1 处理I O请求的步骤系统如何完成用户提出的I O请求呢 这包括 用户进程发出I O请求 系统接受这个I O请求 设备驱动程序具体完成I O操作 I O完成后 用户进程重新开始执行 在UNIX系统中 处理用户提出的I O请求的主要过程如图6 7所示 图6 7I O请求处理过程示意图 1 用户进程发出I O请求 I O请求发自于用户进程 例如 用户编写的C程序中可以使用标准的I O库函数 如printf scanf等 2 执行到与I O请求相对应的系统调用后 转去执行操作系统的核心程序 此时进程的状态由用户态转到核心态 3 设备驱动程序是控制设备动作的核心模块 如设备的打开 关闭 读 写等 用来控制设备上数据的传输 4 I O完成后 由通道 或设备 产生中断信号 2 设备驱动程序功能以上主要是UNIX系统中对I O请求的处理过程 而在很多其他系统中 都为每台设备建立了一个设备驱动进程 由这个进程具体负责和管理该台设备的输入 输出工作 设备驱动进程运行的程序就是各类设备相应的设备驱动程序 也就是说 设备驱动进程严格执行设备驱动程序中规定的各种功能 一般来说 设备驱动程序应有以下功能 1 接受来自上层 与设备无关软件的抽象读 写请求 并将该I O请求排在请求队列的队尾 还要检查I O请求的合法性 如参数是否合法 2 取出请求队列中队首请求 将相应设备分配给它 3 向该设备控制器发送命令 启动该设备工作 完成指定的I O操作 4 处理来自设备的中断 3 设备驱动程序在系统中的位置设备生产厂商不仅制造设备 而且要提供该设备的驱动程序代码 操作系统的设计者会提供某种方式把这些驱动程序安装到系统中 为此 系统的体系结构应能满足安装外来驱动程序的需要 这就意味着 设计者对驱动程序做什么以及它们与操作系统其他部分是如何交互作用等都给出了良好的定义 图6 8示出了设备驱动程序在系统中的逻辑位置 图6 8设备驱动程序在系统中的逻辑位置 4 设备驱动程序的特点各种设备的驱动程序存在很大差别 如硬盘驱动程序与打印机驱动程序就属于不同类别的驱动程序 前者属于块设备驱动程序 后者属于字符设备驱动程序 但所有驱动程序又有一些共同特点 1 驱动程序的主要作用是 实现请求I O的进程与设备控制器之间的通信 将上层的I O请求经加工后送给硬件控制器 启动设备工作 并把设备控制器中有关寄存器的信息上传给请求I O的进程 如设备状态 I O操作完成情况等 2 驱动程序与设备特性密切相关 通常 每个设备驱动程序只处理一种设备类型 至多是一类紧密相关的设备 3 驱动程序可动态安装或加载 4 驱动程序与I O控制方式相关 5 驱动程序与硬件密切相关 6 不允许驱动程序使用系统调用 5 驱动程序的框架1 设备驱动程序与外界的接口计算机中有各种各样的设备 每种设备都有自己的驱动程序 因而设备驱动程序的代码在内核中所占比例较大 1 驱动程序与操作系统内核的接口 2 驱动程序与系统引导的接口 3 驱动程序与设备的接口 2 设备驱动程序的组成按照所完成的功能 设备驱动程序的代码有以下几个部分 1 驱动程序的注册与注销 2 设备的打开与释放 3 设备的读 写操作 4 设备的控制操作 5 设备的中断和轮询处理 6 4 4与设备无关的I O软件尽管有些I O软件是设备专用的 但大部分仍是与设备无关的 设备驱动程序和与设备无关软件之间的严格界线取决于具体系统 因为可以用与设备无关方式实现的某些功能 由于效率或其他原因 实际上在驱动程序中实现 图6 9示出了与设备无关软件所实现的典型功能 图6 9与设备无关I O软件的功能 6 4 5用户空间I O软件多数I O软件都在操作系统中 用户空间中也有一小部分 它们通常以库函数形式出现 例如用户编写的C程序中可以使用标准的I O库函数 如printf scanf等 编译 连接后 就把用户程序和相应的库函数连在一起 然后装入内存 进行运行 而库函数的代码中要使用系统调用 其中包括I O系统调用 经过系统调用进入操作系统 后者为用户进程提供相应的服务 用户空间中另一个重要的I O软件是SPOOLing系统 6 5磁盘调度和管理 几乎所有的计算机都用磁盘存储信息 这是由于磁盘相对于内存有如下三个主要优点 1 容量很大 2 每位的价格非常低 3 当关掉电源后存储信息不丢失 6 5 1物理特性磁盘在物理性能上相对来说是简单的 如图6 10所示 每个盘有一串同心圆和一个读 写头 由磁性物质覆盖在它的两个表面上 信息就记录在磁表面上 图6 10动头盘机构 对磁盘的请求一般要有下述几部分内容 1 输入或输出 2 磁盘地址 驱动器 柱面 面号 扇区 3 内存地址 4 传送长度 6 5 2磁盘调度算法1 先来先服务调度 FCFS 先来先服务 FirstCome FirstServed 调度算法是最简单的一种形式 它最容易实现 但是并没有提供最佳的服务 平均来说 例如 有如下请求磁盘服务的队列 要访问的磁道数分别是 98 183 37 122 14 124 65和67 最早来的磁道请求是98 最后一个是67 如果磁头最初在53道上 它要从53道移到98道 然后依次移到183 37 122 14 124 65 最后移到67道 总共移动了640个磁道 其调度方式如图6 11所示 图6 11FCFS调度法 2 最短寻道时间优先法 SSTF 在把磁头移到远处为另外的请求服务之前 应先把接近于磁头当前位置的所有请求都服务完 这种假定是根据最短寻道时间优先 ShortestSeekTimeFirst 调度算法得来的 SSTF选择的请求距当前磁头所在位置有最小的寻道时间 由于寻道时间通常正比于两个请求的磁道差值 因此磁头移动总是移到距当前磁道最近的磁道上去 图6 12最短寻道时间优先调度 例如 将上面的请求队列用于SSTF 当前磁头在53道上 最接近的磁道是65 一旦移到65 则下一个最接近的磁道是67 在此点 到37道的距离是30 而到98道的距离是31 因而37道距当前道最近 被选为下一个服务对象 接下去的服务顺序是14 98 122 124 最后是183 如图6 12所示 3 扫描法 SCAN 由于请求服务的队列具有动态性质 因此可采用扫描算法 读 写磁头从磁盘的一端出发 向另一端移动 遇到所需的磁道时就进行服务 直至到达磁盘的另一端 在另一端上 磁头移动方向倒过来 继续做下面服务 这样磁头就连续从盘的一端扫到另一端 图6 13示 出了采用电梯算法时磁头移动情况 在图6 13中 请求队列是 98 183 37 122 14 124 65 67 磁头的开始位置在53道 图6 13电梯调度法 4 巡回扫描法 C SCAN C SCAN 巡回扫描法 是SCAN的变种 可使等待时间变得更均匀 与SCAN相同 C SCAN也是把磁头从盘的一端移向另一端 到达请求的道就进行服务 然而 当它到达另一端时 就立即返回到盘的开头 在返回过程中不进行服务 从本质上看C SCAN把磁盘视为一个环 它的最后一道挨着最初一道 如图6 14所示 图6 14C SCAN调度法 6 5 3磁盘调度算法的选择磁盘的调度算法很多 怎么选取一个最佳的算法呢 SSTF相当通用 很有吸引力 而电梯算法和C SCAN算法对磁盘负荷很重的系统来说更为合适 并且不会出现 饥饿 问题 磁盘服务的请求受文件分配方式的影响很大 读连续文件的程序将产生大量的在盘上挤在一起的请求 磁头的移动有限 6 5 4磁盘管理1 磁盘格式化新磁盘 俗称白盘 在用于存放数据之前必须格式化 即把磁盘分成控制器可以读 写的扇区 这个过程称为低级格式化或物理格式化 1 格式化扇区的格式低级格式化按照规定的格式为每个扇区填充控制信息 2 磁盘分区和逻辑格式化为了在盘上保存文件 操作系统需要把有关的数据结构记录在盘上 包括两步工作 第一步是分区 即把磁盘分成一个或多个柱面组 可把每个分区视为单独的一个磁盘 2 引导块结构计算机启动后开始运行引导程序 引导程序负责对系统的所有方面进行初始化 从CPU的寄存器到设备控制器和内存 然后启动操作系统 在盘上找到操作系统内核 把它装入内存 接着跳转到起始地址 开始执行操作系统 图6 15MS DOS磁盘布局 3 坏块处理1 坏块的产生磁盘上所有的扇区并非都是完好无损的 可能有些扇区或多或少地存在损坏的情况 2 处理坏块的方式如果扇区受损情况很小 例如只有几位不能正确读 写 那么这种坏块可以照常使用 但每次读 写时都要利用ECC来纠正错误 对待坏块的处理方式通常有两种 由控制器处理和操作系统处理 1 控制器处理方式 在磁盘出厂之前 对它进行检测 并把发现的坏块清单写在磁盘上 磁盘上有若干备用扇区 2 操作系统处理方式 如果控制器没有能力对坏块重新映像 就必须由操作系统解决坏块问题 3 后备问题与坏块相关的一个问题是后备 如果磁盘是一个文件一个文件地进行后备 那么应保证后备工具不把坏块文件也拷贝过去 4 其他磁盘故障除坏块外 因磁臂机械问题还会产生寻道错误 即要求磁臂移到的柱面号与控制器实际读出的柱面号不同 6 6Linux系统的设备管理 6 6 1设备管理概述用户是通过文件系统与设备接口的 所有设备都作为特别文件 从而在管理上就具有下列共性 1 每个设备都对应文件系统中的一个索引节点 都有一个文件名 2 应用程序通常可以通过系统调用open 打开设备文件 建立起与目标设备的连接 3 对设备的使用类似于对文件的存取 4 设备驱动程序都是系统内核的一部分 它们必须为系统内核或者它们的子系统提供一个标准的接口 5 设备驱动程序利用一些标准的内核服务 如内存分配等 图6 16示出设备驱动的分层结构 图6 16设备驱动分层结构示意图 6 6 2设备驱动程序和内核之间的接口Linux系统和设备驱动程序之间使用标准的交互接口 无论是字符设备 块设备还是网络设备的设备驱动程序 当内核请求它们提供服务时 都使用同样的接口 Linux提供了一种全新的机制 就是 可安装模块 在应用程序界面上 内核提供四个系统调用来支持可安装模块的动态安装和拆卸 但通常情况下 用户是利用系统提供的插入模块工具和移走模块工具来装卸可安装模块的 插入模块的工作主要有 1 打开要安装的模块 把它读到用户空间 2 必须把模块内涉及对外访问的符号 函数名或变量名 连接到内核 即把这些符号在内核映像中的地址填入该模块中需要访问这些符号的指令以及数据结构中 3 在内核创建一个module数据结构 并申请所需的系统空间 4 最后 把用户空间中完成了连接的模块映像装入内核空间 并在内核中 登记 本模块的有关数据结构 如file operations结构 其中有指向执行相关操作的函数的指针 1 字符设备在Linux系统中 打印机 终端等字符设备都作为字符特别文件出现在用户面前 用户对字符设备的使用就和存取普通文件一样 图6 17字符设备驱动程序示意图 在应用程序中使用标准的系统调用来打开 关闭 读 写字符设备 当字符设备初始化时 其设备驱动程序被添加到由device struct结构组成的chrdevs结构数组中 device struct结构由两项构成 一个是指向已登记的设备驱动程序名的指针 另一个是指向file operations结构的指针 而file operations结构的成分几乎全是函数指针 分别指向实现文件操作的入口函数 设备的主设备号用来对chrdevs数组进行索引 如图6 17所示 2 块设备对块设备的存取与对文件的存取方式一样 其实现机制也与字符设备使用的机制相同 Linux系统中有一个名为blkdevs的结构数组 它描述了一系列在系统中登记的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论