输入输出系统

  • I/O系统的功能、模型和接口
    • I/O系统的基本功能
      • 隐藏物理设备的细节
      • 仅向上层进程提供少量的、抽象的读/写命令
      • 与设备的无关性
      • 提高处理机和I/O设备的利用率
      • 对I/O设备进行控制
      • 确保对设备的正确共享
      • 错误处理
    • I/O系统的层次结构和模型
      • I/O系统的层次结构

      • I/O系统中各种模块之间的层次视图

    • I/O系统接口
      • 块设备接口
      • 流设备接口:
        • 字符设备接口
      • 网络通信接口
    • I/O设备的类型
      • 按传输速率分类:
        • 低速设备、中速设备、高速设备
      • 按信息交换的单位分类:
        • 块设备、字符设备
      • 按设备的共享属性分类:
        • 独占设备、共享设备、虚拟设备
    • 设备与控制器之间的接口

    • 设备控制器
      • 设备控制器是CPU和设备之间的一个接口,它接收从CPU发来的命令,控制I/O设备操作,实现主存和设备之间的数据传输。
      • 控制器接受一条命令后,CPU可以转向其它工作,而设备控制器自行完成具体的I/O操作;当命令执行完毕后,控制器发出一个中断信号,以便OS重新获得CPU的控制权并检查执行结果
      • 设备控制器是一个可编址设备,当它连接多台设备时,则应具有多个设备地址
    • 设备控制器的基本功能
      • 接收和识别命令
      • 数据交换
      • 标识和报告设备的状态
      • 地址识别
      • 数据缓冲
      • 差错控制
    • 设备控制器的组成

    • I/O通道
      • 定义:
        • 通道是独立于CPU的专门负责数据输入/输出传输工作的处理机,对外部设备实现统一管理,代替CPU对输入/输出操作进行控制,从而使输入,输出操作可与CPU并行操作。
      • 引入通道的目的:
        • 为了使CPU从I/O事务中解脱出来,同时为了提高CPU与设备,设备与设备之间的并行工作能力
      • 通过执行通道程序来控制I/O操作
      • 指令类型单一,与CPU共享内存
    • 通道类型
      • 字节多路通道(ByteMultiplexor Channel)

        • 字节多路通道以字节为单位传输信息,它可以分时地执行多个通道程序。当一个通道程序控制某台设备传送一个字节后,通道硬件就控制转去执行另一个通道程序,控制另一台设备传送信息,使所有的通道轮转一周
        • 主要连接以字节为单位的低速I/O设备。如打印机,终端。
        • 以字节为单位交叉传输,当一台传送一个字节后,立即转去为另一台传送字节
      • 数组选择通道(BlockSelector Channel)

        • 选择通道是以成组方式工作的,即每次传送一批数据,故传送速度很高。选择通道在一段时间内只能执行一个通道程序,只允许一台设备进行数据传输
        • 当这台设备数据传输完成后,再选择与通道连接的另一台设备,执行它的相应的通道程序
        • 主要连接磁盘,磁带等高速I/O设备
      • 数组多路通道(BlockMultiplexor Channel)
        • 它结合了选择通道传送速度高和字节多路通道能进行分时并行操作的优点。它先为一台设备执行一条通道指令,然后自动转接,为另一台设备执行一条通道指令;主要连接高速设备
        • 这样,对于连接多台磁盘机的数组多路通道,它可以启动它们同时执行移臂定位操作,然后,按序交叉地传输一批批数据。数据多路通道实际上是对通道程序采用多道程序设计的硬件实现
    • “瓶颈”问题
      • 单通路I/O系统

      • 多通路I/O系统

    • “瓶颈”问题
      • 解决问题的方法是增加设备到主机的通路而不增加通道:即把一个设备连接到多个控制器上,一个控制器连接到多个通道上
    • 总线系统
      • 总线型I/O系统结构

      • ISA(IndustryStandard Architecture)总线
      • EISA(ExtendedISA)总线
      • VESA(VideoElectronic Standard Association)总线
      • PCI(PeripheralComponent Interface)总线
  • 中断机构和中断处理程序
    • 中断简介
      • 中断和陷入:
        • 中断:
          • 外部设备引起
        • 陷入:
          • CPU内部事件引起
      • 中断向量表和优先级
      • 对多中断源的处理方式
        • 屏蔽(禁止)中断
        • 嵌套中断
    • 中断处理程序

      • 测定是否有未响应的中断信号
      • 保护被中断进程的CPU环境

      • 转入相应的设备处理程序
      • 中断处理
      • 恢复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操作 .
      • 在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备的I/O操作。
      • 不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序(模块),供用户进程或系统进程调用。
    • 设备驱动程序的处理过程
      • 将抽象要求转换为具体要求
      • 检查I/O请求的合法性
      • 读出和检查设备的状态
      • 传送必要的参数
      • 工作方式的设置
      • 启动I/O设备
  • I/O设备的控制方式
    • 按照I/O控制器功能的强弱,以及和CPU之间联系方式的不同,对I/O设备的控制方式分类,
    • 主要差别在于:
      • 中央处理器和外围设备并行工作的方式不同,并行工作的程度不同
    • 程序I/O方式

      • 在这种方式下,输入输出指令或询问指令测试一台设备的忙闲标志位,决定主存储器和外围设备是否交换一个字符或一个字
      • 一旦CPU启动I/O设备,便不断查询I/O设备的准备情况,终止原程序的执行,浪费CPU时间;
      • I/O准备就绪后,CPU参与数据传送工作,而不能执行原程序,
      • CPU和I/O设备串行工作,使主机不能充分发挥效率,外围设备也不能得到合理使用,整个系统效率很低。
    • 中断驱动I/O控制方式

      • CPU启动I/O设备后,不必查询I/O设备是否就绪,继续执行现行程序。
      • 设备控制器按照命令要求去控制指定的I/O设备,当数据准备好后,即进入数据寄存器后,控制器通过控制线向CPU发送中断信号
      • I/O操作直接由CPU控制,每传送一个字符或字,要发生一次中断,仍然消耗大量CPU时间
      • 不必忙式查询I/O准备情况,CPU和I/O设备可实现部分并行,与程序查询的串行工作方式相比,使CPU资源得到较充分利用
    • DMA控制方式(直接存储器访问方式)
      • 如果I/O设备能直接与主存交换数据而不占用CPU,CPU的利用率还可提高,这就出现了直接存储器存取DMA方式
      • 特点:
        • 数据传输的基本单位是数据块,在主机与I/O设备之间每次至少传递一个数据块;
        • 所传送的数据块是从设备直接送入内存;
        • 在传送一个或多个数据块的开始和结束才需CPU干预,传送过程是在控制器的控制下完成
      • DMA方式

      • DMA控制器的组成

      • DMA工作过程

    • I/O通道控制方式
      • I/O通道控制方式的引入
        • 为获得CPU和外围设备间更高的并行工作能力,也为了让种类繁多,物理特性各异的外围设备能以标准的接口连接到系统中,计算机系统引入了自成独立体系的通道结构
        • 由通道管理和控制I/O操作,减少了外围设备和CPU的逻辑联系。把CPU从琐碎的I/O操作中解放出来
      • 与DMA方式的区别
        • 通道控制方式与DMA方式相类似,也是一种内存和设备直接进行数据交换的方式。与DMA方式不同的是,在通道控制方式中,数据传送方向、存放数据的内存始址及传送的数据块长度均由一个专门负责输入/输出的硬件——通道来控制。
        • 另外,DMA方式每台设备至少需要一个DMA控制器,而通道控制方式中,一个通道可控制多台设备与内存进行数据交换
      • 通道程序

        • 操作码。
        • 内存地址。
        • 计数。
        • 通道程序结束位P。
        • 记录结束标志R。
  • 与设备无关的I/O软件
    • 设备独立性
      • 设备独立性的概念
        • 也称为设备无关性。 其基本含义是: 应用程序独立于具体使用的物理设备。
        • 引入了逻辑设备和物理设备这两个概念
        • 在应用程序中, 使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称。
        • 系统须具有将逻辑设备名称转换为某物理设备名称的功能
      • 设备独立性的好处
        • 在实现了设备独立性的功能后, 可带来以下两方面的好处。
          • 设备分配时的灵活性
          • 易于实现I/O重定向
    • 与设备无关的软件
      • 设备驱动程序的统一接口
      • 缓冲管理
      • 差错控制
      • 对独立设备的分配与回收
      • 独立于设备的逻辑数据块
  • 设备分配
    • 设备分配中的数据结构
      • 设备控制表DCT

      • 控制器控制表、通道控制表和系统设备表

    • 设备分配时应考虑的因素
      • 设备的固有属性
        • 独享设备。
        • 共享设备。
        • 虚拟设备。
      • 设备分配算法
        • 先来先服务。
        • 优先级高者优先。
      • 设备分配中的安全性
        • 安全分配方式
        • 不安全分配方式
    • 独占设备的分配程序
      • 基本的设备分配程序
        • 分配设备
        • 分配控制器
        • 分配通道
      • 设备分配程序的改进
        • 增加设备的独立性
        • 考虑多通路情况
    • 逻辑设备名到物理设备名映射的实现
      • 为了实现设备的独立性,系统必须设置一张逻辑设备表(LUT),用于将应用程序中所使用的逻辑设备名映射为物理设备名。
      • 逻辑设备表

      • LUT的设置问题
        • 第一种方式是在整个系统中只设置一张LUT。
        • 第二种方式是为每个用户设置一张LUT。
  • 用户层的I/O软件
    • 系统调用与库函数
      • 用户层软件必须通过一组系统调用来取得操作系统服务。在现代的高级语言以及C语言中,通常提供了与各系统调用一一对应的库函数,用户程序通过调用对应的库函数使用系统调用。
    • SPOOLing技术——假脱机系统
      • 什么是SPOOLing

        • 多道程序环境中,用程序来模拟脱机输入时的外围控制机功能。
      • SPOOLing系统的组成

      • 共享打印机——SPOOLing技术的典型实例
        • 打印机属于独享设备。 用SPOOLing技术转换为共享设备,提高设备的利用效率。
        • 用户请求打印后:
          • 输出进程在输出井中申请一个空闲磁盘块区,并将要打印的数据送入其中。
          • 输出进程申请并填写一张空白的用户请求打印表,再将该表挂到请求打印队列上
          • 打印机空闲时,首取第一张请求表,将数据从输出井传送到内存缓冲区,进行打印。
      • SPOOLing系统的特点
        • 提高了I/O的速度。
        • 将独占设备改造为共享设备。
        • 实现了虚拟设备功能。
  • 缓冲区管理
    • 引入缓冲技术的目的
      • 改善中央处理器与外围设备之间速度不配的矛盾,凡是数据到达和离去速度不匹配的地方均可采用缓冲技术。
      • 减少对CPU的中断频率,放宽对CPU中断响应时间的限制,
      • 提高CPU和I/O设备的并行性。
      • 利用缓冲寄存器实现缓冲

    • 缓冲技术实现的基本思想
      • 进程执行写操作输出数据时,向系统申请一个缓冲区,若为顺序写请求,则不断把数据填到缓冲区,直到被装满。此后,进程继续它的计算,系统将缓冲区内容写到I/O设备上。
      • 进程执行读操作输入数据时,向系统申请一个缓冲区,系统将一个物理记录的内容读到缓冲区,根据进程要求,把当前需要的逻辑记录从缓冲区中选出并传送给进程
      • 在输出数据时,只有在系统还来不及腾空缓冲而进程又要写数据时,它才需要等待;
      • 在输入数据时,仅当缓冲区空而进程又要从中读取数据时,它才被迫等待。
    • 单缓冲(SingleBuffer)

    • 双缓冲(DoubleBuffer)

      • 双机通信时缓冲区的设置

    • 循环缓冲
      • 循环缓冲的组成

      • 循环缓冲区的使用
        • Getbuf过程。计算进程要使用缓冲区数据时使用
        • Releasebuf过程。当计算进程把C缓冲区中数据提取完毕后,调用Releasebuf将缓冲区C释放。
      • 进程同步
        • Nexti指针追赶上Nextg指针。意味着输入进程输入数据速度大于计算进程处理数据的速度。称为系统受计算限制
        • Nextg指针追赶上Nexti指针。意味着输入数据的速度低于计算进程的计算速度,称为系统受I/O限制
    • 缓冲池(BufferPool)
      • 缓冲池的组成
        • 空缓冲队列emq。
        • 输入队列inq。
        • 输出队列outq。
        • 除了上述三种(个)队列外,还应具有四种工作缓冲区:
          • 用于收容输入数据的工作缓冲区;
          • 用于提取输入数据的工作缓冲区;
          • 用于收容输出数据的工作缓冲区;
          • 用于提取输出数据的工作缓冲区;
      • Getbuf过程

      • Putbuf过程

      • 缓冲区的工作方式

  • 磁盘存储器管理
    • 磁盘性能简述
      • 数据的组织和格式

      • 磁盘的类型
        • 固定头磁盘
          • 每条磁道上都有一读/写磁头,所有的磁头都被装在一刚性磁臂中。可以并行读/写。
        • 移动头磁盘
          • 每一个盘面仅配有一个磁头,也被装入磁臂中。仅能以串行方式读/写。
      • 磁盘访问时间

    • 磁盘调度
      • 目标
        • 使磁盘的平均寻道时间最少
      • 先来先服务FCFS(First-Come,First Served)
      • 最短寻道时间优先SSTF(ShortestSeek Time First)
      • 扫描(SCAN)算法
      • 循环扫描(CSCAN)算法
        • 先来先服务FCFS
          • 原理:根据进程请求访问磁盘的先后次序进行调度。

          • 优点:
            • 公平、简单、不会出现饥饿现象
          • 缺点:
            • 平均寻道时间可能较长
        • 最短寻道时间优先SSTF
          • 原理:选择有距当前磁头所在磁道最近的访问磁道的进程。

          • 优点:
            • 比FCFS有更好的寻道性能
          • 缺点:
            • 可能导致某个进程发生饥饿现象
        • SCAN算法——电梯调度算法
          • 原理:选择与当前磁头移动方向一致且距离最近的进程。

          • 优点:
            • 寻道性能较好避免出现“饥饿”现象
        • 循环扫描(CSCAN)算法
          • 规定磁头单向移动。

      • N-Step-SCAN算法
        • “磁臂粘着”现象:磁臂停留在某处不动。
        • 将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列。而每个队列的处理是按SCAN算法,一个处理完毕再处理下一个队列。
      • FSCAN算法
        • N-Step-SCAN算法的简化,只分为两个队列。
        • 当前请求I/O的进程队列:SCAN算法
        • 扫描期间请求的进程队列:FCFS
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值