OS_第五章设备管理

  1. 第五章-设备管理

第五章-设备管理

  • I/O系统组成
    • I/O系统结构
      • 微机总线型I/O系统结构 图片
      • 主机通道型I/O系统结构 图片
    • I/O设备分类及接口
      • 数据传输速率 分类
        • 高速设备
        • 中速设备
        • 低速设备
      • 信息交换单位 分类
        • 块设备(传输速度高,可寻址、DMA方式 例如磁盘
        • 字符设备(传输速率低、不可寻址、中断方式 例如鼠标、键盘
      • 设备共享属性 分类
        • 独占设备
        • 共享设备
        • 虚拟设备
    • 设备控制器( IO设备由机械部分和电子部件组成,机械部分:执行I/O操作;电子部件:I/O控制器,设备控制器
      • 设备控制器的功能
        • 接收和识别命令( 控制寄存器/命令译码器 ):如CPU发来的read/write命令,I/O控制器中会有响应的 控制寄存器来存放命令和参数
        • 数据交换( 数据寄存器 ): I/O控制器中设置相应的数据寄存器输出时 ,数据寄存器用于暂存CPU发来的数据,之后再由控制器送出数据; 输入时 ,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据
        • 标识和报告设备状态( 状态寄存器 ): I/O控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态 ,1表示空闲,0表示忙碌
        • 地址识别( 地址译码器 ): 为了区分设备控制器中的各个寄存器,故也需要给各个寄存器设置一个特定的地址 ;I/O控制器通过CPU提供的地址来判断 CPU要读写哪个寄存器
        • 数据缓冲( 缓冲器
        • 差错控制( 差错检查码
      • 设备控制器的组成 图片
        • CPU与控制器的接口部分( 三线、3寄存器1 I/O逻辑
          • 三线( 数据总线(双向)、地址线(单向)、控制线(单向)
            • 数据总线: CPU 读写 数据数据寄存器
            • 地址线: CPU 指定读写设备的 地址I/O逻辑
            • 控制线: CPU 发出 命令I/O逻辑
          • 三寄存器
            • 数据寄存器:暂存CPU的读/写数据( 双向
            • 控制寄存器:存放CPU发来的命令和参数( CPU到控制寄存器
            • 状态寄存器:反馈状态的设备到CPU( 状态寄存器到CPU
        • I/O逻辑部分: 负责接收和识别CPU发来的各种命令,并负责对设备发号施令,相当于I/O控制器中的“CPU”作为CPU和设备之间的桥梁
        • 控制器与设置的接口部分
          • 数据总线( 双向 ):传送输入输出 数据 到I/O逻辑
          • 状态线( 单向 ):反馈设备 当前状态I/O逻辑
          • 控制线( 单向 ): I/O控制器设备 发出 控制信息
    • I/O通道
      • I/O通道的引入
        • 主要目的在于提高I/O过程的独立性 ,不仅使数据的传送能独立于CPU,而且使有关I/O操作的组织、管理与结束尽量独立,从而 保证CPU有更多的时间进行数据处理;
        • 通道作为特殊的处理机 ,其 指令类型单一、无专有内存(有CPU共享内存)通过执行通道I/O程序来控制I/O操作;
        • 设置通道后, CPU只需向通道发出一条I/O指令通道收到该指令后,便从内存取出本次要执行的通道程序并予执行;仅当其完成规定的I/O任务后,才向CPU发出中断信号
      • 通道指令与通道程序
        • 通道指令:读写指令、控制指令
        • 通道程序:通道指令的逻辑集合,由设备驱动程序自动生成,存放于内存特定区域
      • 通道类型
        • 字节多路通道( 低、中速 I/O ):含有 许多非分配型子通道 分别连接在 低、中速I/O设备 上,子通道 按时间片轮转方式共享主通道 ,按 字节方式 进行数据传送 图片
        • 数组选择通道( 高速 I/O ): 只含有一个分配型子通道 ,一段时间内只能 执行一道通道程序 、控制一台设备按 数组方式 进行数据传送, 通道独占且利用率低,用于连接多台高速设备
        • 数组多路通道( 中、高速 I/O ):含有 多个非分配型子通道 分别连接在 高、中速I/O设备上 ,子通道 按时间片轮转方式共享主通道 ,按 数组方式 进行数据传送
      • 通道瓶颈问题和解决方案:
        • 瓶颈问题: 通道贵,数量少,造成系统的吞吐量下降 图片
        • 解决方案: 增加设备到主机间的通路而不增加通道 图片
  • I/O控制方式
    • 程序直接控制方式 图片
      • CPU在设备状态就绪之前,不断地轮询设备状态干预频率很频繁
      • 数据流向:I/O设备 -> CPU -> 内存 (读)
      • 每次读/写一个字
      • CPU与I/O设备只能串行工作,CPU需要一直轮询检查,长期处理"忙等"状态,CPU利用率低下
    • 中断驱动控制方式 图片
      • CPU不再需要轮询设备状态,设备准备就绪后给CPU发出一个中断信号,在设备未就绪时,CPU可以干其他事
      • 数据流向:I/O设备 -> CPU -> 内存 (读)
      • 每次读/写一个字
      • CPU和I/O设备可以并行工作,CPU利用率得到明显提升,但频繁的中断处理会消耗较多的CPU时间
    • DMA方式(直接内存存取型I/O控制方式)
      • DMA控制器 图片
      • DMA控制方式 图片
        • 仅在传送 一个或多个数据块开始和结束 时, 需要CPU干预
        • 数据流向:I/O设备 -> 内存 (不再需要经过CPU)
        • 每次读写一个或多个块(必须是连续的多个块,之后在内存中也是连续的)
        • CPU介入的频率进一步降低,传送数据的单位可以是一个或多个块;缺点:只能读写一个/多个连续的块,若要读写多个离散的数据块,CPU需要发出多条I/O指令,进行多次中断完成。
    • 通道型控制方式 图片
      • 只有在一组数据块传送前后才需要CPU干预
      • 数据流向:I/O设备 -> 内存
      • 每次读写一组数据块
      • CPU、通道、I/O设备均可并行工作,利用率很高
    • 总结: 图片
  • 设备管理目标、功能及结构
    • 设备管理的目标 :设备管理程序用于控制与管理实现信息输入、输出和存储的设备; 主要目标包括 :方便用户使用;提高系统I/O效率;设备管理的可扩充性,包括设备的增加和删除以及对新的设备类型的适应性
    • 设备管理的功能
      • 提供设备使用的用户接口:命令接口和编程接口
      • 设备分配和释放:分配设备及相应的通道、设备控制器
      • 设备的访问和控制:并发访问及差错处理
      • I/O缓冲和调度:提高I/O访问效率,缓解CPU与外设矛盾
    • 设备管理的层次结构 图片
      • 用户空间I/O请求支持层: 提供对逻辑设备的控制
        • 针对用户接口 ,提供抽象的命令,如Open, Close, Read, Write
        • 针对通信设备 ,提供通信体系结构如网络协议栈
        • 针对文件存储设备 ,提供文件系统的逻辑结构控制
      • 设备独立性软件层: 逻辑设备与物理设备间过渡协调机构 ,实现用户命令到设备操作序列的转换,提供缓冲机制
      • 设备调度与控制层: 实现硬件物理设备 的设备驱动、设备控制、状态维护、中断处理及并发I/O访问调度
  • 缓冲管理
    • 缓冲技术的引入( 缓冲区可以由专门的硬件寄存器(如联想寄存器)组成,也可以利用内存作为缓冲区
      • 缓和CPU和I/O设备速度不匹配的矛盾
      • 减少对CPU的中断频率,放宽对中断响应时间的限制 图片
      • 提高CPU与I/O设备之间的并行性
    • 单缓冲 [Max(C,T)+M] 图片
    • 双缓冲 图片 图片
    • 循环缓冲 图片
      • 缓冲区的使用及进程同步: 取缓冲区(空/满): GetBuf (BufType, Current)过程 释放缓冲区(空/满): ReleaseBuf (BufType, Current) 过程
      • 进程同步: Nexti 指针追赶上Nextg 指针时,输入进程应阻塞 ,直至计算进程把某满缓冲区数据取走并调用ReleaseBuf 过程将之唤醒; Nextg指针追赶上 Nexti指针时,计算进程应阻塞 ,直至输入进程装满某空缓冲区并调用ReleaseBuf 过程将之唤醒
    • 缓冲池
      • 缓冲池的组成( 三个队列四种工作缓冲区
        • 三个队列
          • 空缓冲队列:空缓冲
          • 输入队列:装有输入数据的缓冲队列
          • 输出队列:装有输出数据的缓冲队列
        • 四种工作缓冲区 图片
          • 用于 收容输入数据 的工作缓冲区 Hin :输入进程请求输入数据
          • 用于 提取输入数据 的工作缓冲区 Sin :计算进程请求取得一块输入数据
          • 用于 收容输出数据 的工作缓冲区 Hout :计算进程将处理后的一块数据放入输出数据
          • 用于 提取输出数据 的工作缓冲区 Sout :输出进程请求输出数据
      • GetBuf过程和PutBuf过程 图片
      • 缓冲队列的组织形式 图片
        • 收容输入输入进程调用GetBuf(emq,Hin) , 从空缓冲队列的队首取下一块空缓冲区把它作为收容输入工作缓冲区Hin然后把数据输入其中 ,装满后; 调用PutBuf(Inq,Hin),将收容工作缓冲区Hin挂在输入队列Inq上
        • 提取输入计算进程调用GetBuf(inq,Sin),从输入队列队首取下一块输入缓冲区,将它作为提取输入工作缓冲区Sin,计算进程从中提取数据 ,提取完之后; 调用PutBuf(emq,Sin),将提取输入缓冲区Sin挂在空缓冲队列上
        • 收容输出计算进程调用GetBuf(emq,Hout),从空缓冲队列队首取下一块空缓冲区,把它作为收容输出工作缓冲区Hout,然后把数据输出其中 ,装满后; 调用PutBuf(Outq,Hout),将收容输出缓冲区Hout挂在Outq队列队尾
        • 提取输出输出进程调用GetBuf(Outq,Sout),从输出缓冲队列队首取下一块缓冲区,将它作为提取输出工作缓冲区Sout,输出进程从中提取数据 ,提取完之后; 调用PutBuf(emq,Sout),提取输出缓冲区Sout挂在emq队尾
  • 设备分配
    • 设备分配用数据结构
      • 系统设备表:记录 系统全部设备 的情况 图片
      • 设备控制表:针对 每台设备 而设置和记录对应情况 图片
      • 设备控制器控制表:针对 每个设备控制器 而设置和记录对应情况 图片
      • 通道控制表:针对 每个通道 而设置和记录对应情况 图片
    • 设备分配考虑因素
      • 设备的固有属性: 独占/共享/虚拟设备(可共享)
      • 设备分配算法: 先来先服务/优先级高者优先
      • 设备分配中的安全性 :安全分配/不安全分配方式
        • 安全分配方式:每当 进程发出I/O请求获得某种设备(资源)后便进入阻塞状态 (破坏了死锁必要条件的: 请求和保持 ),直到其I/O操作完成时才被唤醒, 缺点是CPU和I/O设备串行工作,进展缓慢
        • 不安全分配方式: 进程发出I/O请求后仍继续运行 ,需要时又可发出第二、第三个I/O请求;仅当进程所请求的设备已被另一进程占用时,进程才进入阻塞状态, 同一进程可同时操作多台设备,故推进迅速为避免死锁,需进行安全性计算
    • 设备独立性( 设备无关性 ): 应用程序独立于具体使用的物理设备 ;应用程序 以逻辑设备名称 来请求使用某类设备;而系统实际执行时则 使用物理设备 名称
      • 逻辑设备表( LUT ):实现 逻辑设备名到物理设备名的映射
        • 单用户系统:整个系统设置一张逻辑设备表 图片
        • 多用户系统:为每个用户设置一张逻辑设备表 图片
      • 设备独立性的目标
        • 设备分配时的 灵活性、可拓展性/适应性
        • 易于实现 I/O重定向(指用于I/O操作的设备可以更换即重定向,而不必改变应用程序)
    • 独占设备的分配程序:对于 具有I/O通道的系统 ,在进程提出I/O请求后,系统的设备分配程序,可按 下述步骤进行设备分配:分配设备(物理设备名)、分配设备控制器、分配通道
      • 设备分配程序的不足: 进程以物理设备名提出I/O请求;采用单通路I/O系统结构,易产生瓶颈现象
      • 设备分配程序的改进措施: 进程应以逻辑设备名提出I/O请求,从而增加设备的独立性; 考虑多通路I/O系统结构
    • 假脱机技术(SPOOLing )
      • 脱机技术:批处理阶段引入了脱机技术(磁带)
      • 假脱机技术( SPOOLing ): 通过软件的方式将一台物理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控制方式紧密相关:中断/DMA/通道IO控制方式
      • 与硬件紧密相关,故部分程序代码必须用汇编语言书写,且基本部分可固化和存放于ROM
    • 设备驱动过程
      • 化抽象I/O操作 请求为 具体要求
      • 检查 用户I/O请求的 合法性
      • 检查I/O设备状态 ,判断是否可用
      • 传递和设置I/O设备的有关参数与工作方式 ,包括根据用户I/O请求构造必要的通道程序
      • 发出I/O命令 ,启动分配到的I/O设备
    • 中断处理过程
      • 中断与陷入
        • 中断: 指CPU对I/O设备发来的中断信号 的一种 响应 。由于中断是 由外部设备引起 的,故又称 外中断
        • 陷入: 由CPU内部事件 所引起的中断。例如 进程在运算中发生了溢出,又如程序出错,如非法指令、地址越界 等。通常把这类中断称为 内中断或陷入 。与中断一样,若系统发现了有陷入事件,CPU也将暂停正在执行的程序,转去执行该陷入事件的处理程序。
      • 中断向量表和中断优先级
        • 中断向量表:为方便处理, 通常为每种设备配以相应的中断处理程序 ,并把其 入口地址放在中断向量表 中;同时为 每一设备的中断请求规定一个中断号 ,对应于中断向量表中的一项。当I/O设备发来中断请求时, 由中断控制器确定其中断号,并据此中断号查找中断向量表,从中取出中断处理程序的入口地址 ,这样便可以转入中断处理程序执行
        • 中断优先级:每个 中断源对服务要求的紧急程度并不相同 ,需要为它们规定不同的优先级。例如, 磁盘中断、打印机中断、键盘中断的优先级依次降低
      • 对多中断源的处理方式
        • 屏蔽中断:处理机 正在处理一个中断时 ,将 屏蔽掉所有的中断 ,直到处理机已完成本次中断的处理后再去检查是否有中断发生
        • 嵌套中断: 在设置了中断优先级的系统中同时有多个不同优先级的中断请求时CPU优先响应最高优先级的中断请求;同时高优先级的中断请求可以抢占正在运行的低优先级中断的处理机。 该方式类似于 基于优先级的抢占式进程调度。
  • 磁盘存储器管理
    • 磁盘性能简述
      • 磁盘存储器
        • 容量大、存取速度快 ,且 可实现随机存取
        • 实现虚拟存储器 /虚拟设备 的必需硬件
        • 存放(程序和数据)文件的主要外存设备
      • 磁盘的结构
        • 磁盘、磁道、扇区 图片
        • 盘面、柱面 图片
      • 磁盘的类型
        • 硬盘和软盘、单片盘和多片盘(了解)
        • 固定头磁盘和活动头磁盘 图片
          • 活动头磁盘访问时间构成 图片
    • 磁盘调度: 使各进程对磁盘的平均访问时间(主要是寻道时间)最小
      • 先来先服务调度算法( FCFS图片
        • 基本思想:根据进程 请求访问磁盘的先后次序调度
        • 评价: 公平、简单 且每个进程的请求都能依次得到处理,但 寻道时间可能较长
      • 最短寻道时间优先调度算法( SSTF图片
        • 基本思想:选择所 访问磁道与磁头当前所在磁道距离最近的进程优先调度
        • 评价: 不能保证平均寻道时间最短具较好的寻道性能可能导致进程饥饿现象
      • 扫描算法(电梯调度算法)( SCAN图片
        • 基本思想: 优先考虑磁头当前移动的方向
        • 评价 :既能获得较好的寻道性,又能防止进程饥饿,广泛用于大中小型机及网络中
      • 循环扫描算法( CSCAN图片
        • 基本思想: 规定磁头单向移动,(与电梯调度算法的区别是,返回时直接回到起始段而非逐步递减)避免某些进程磁盘请求的严重延迟
        • 评价: 避免某些进程磁盘请求的严重延迟
      • N步扫描算法( N-Step-SCAN )与 FSCAN算法 :磁盘克服前述调度算法均具的 磁臂粘着现象磁臂停留在某处不动的情况(特别是高密度磁盘)
        • N-Step-SCAN主要思想是在磁头移动时,每经过N个磁道后就改变方向。
        • FSCAN算法定期切换到队列的另一端以服务那些在当前磁头位置的请求。这样可以确保在某个时间段内,队列两端的请求都能得到服务。
    • 磁盘高速缓冲
      • 磁盘高速缓冲的概念并非通常意义下在内存和CPU之间增设的小容量高速存储器 ,而是指利用 内存中的存储空间暂存从磁盘中读出的一系列盘块 中的信息,因此, 其为一组在逻辑上属于磁盘而物理上驻留在内存的盘块
      • 磁盘高速缓冲在内存的形式: 开辟单独的固定大小的空间;与虚拟存储器共享内存缓冲池
    • 提高磁盘I/O速度的其他方法
      • 提前读:用户(进程)对文件访问常采用 顺序访问方式(前提) ,即顺序地访问文件各盘块的数据, 所以在读入当前块的同时,可将下一盘块数据提前读入缓冲区
      • 延迟写:指缓冲区中的数据本应立即写回磁盘,但 考虑到它们不久之后可能还会再被本进程或其它进程访问,因而并不立即将其写入磁盘,而是将它挂在空闲缓冲区队列的末尾
      • 虚拟盘( RAM盘 ): 指利用内存空间仿真磁盘,常用于存放临时文件与磁盘高速缓冲区别 :内容由用户/OS控制
      • 数据分布优化: 优化物理块的分布 (尽可能把属于同一个(索引或链接)文件的数据盘块安排在同一条磁道或相邻的磁道上,使磁头移动距离最小位示图或以簇为单位进行分配); 优化索引结点的分布: (将磁盘上所有磁道分成若干组,在每各组中都含有索引结点、盘块和空闲盘块表,以保证索引结点盘块与存放文件的数据盘块间距离最小)
    • 磁盘I/O全过程剖析(读操作为例)
      • 全过程流程图 图片
      • I/O请求者进程(上) 图片
      • 磁盘设备驱动进程(上) 图片
      • 通道程序 图片
      • 中断处理 图片
      • 磁盘设备驱动进程(下【对应9】) 图片
      • I/O请求者进程(下【对应5/11】) 图片

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2542608082@qq.com