第14章 I/O子系统

本文探讨了I/O子系统的特点,包括内存映射原理,以及字符、块和网络设备接口的特性和操作。讲解了同步、异步I/O的不同模式,并剖析了I/O结构、DMA、I/O指令与数据传输方式。涉及磁盘调度算法和磁盘缓存优化,展示了现代操作系统如何处理设备中断和磁盘I/O性能提升策略。
摘要由CSDN通过智能技术生成

第14章 I/O子系统

14.1 I/O特点

内存映射原理

  • 常见设备接口类型
  1. 字符设备:键盘鼠标、串口
    a.以字节为单位顺序访问
    b.I/O命令,get(),put()等。通常使用文件访问接口和语义
    c.通常速度很慢
  2. 块设备:磁盘、磁带、光驱
    a.均匀的数据块访问
    b.I/O命令通常使用文件系统接口,也可以使用内存映射访问
  3. 网络设备:以太网、无线、蓝牙
    a.格式化的报文交换
    b.I/O命令:send/receive 网络报文,通过网络接口支持多种网络协议。
  • 同步与异步I/O:
    1、阻塞I/O:Wait; 发出请求后等待数据读出或写入完毕
    在这里插入图片描述
  • 注意,上图中的用户发出I/O请求时向下处理是绕过中断处理的,由设备驱动把用户请求转换成实际的硬件控制命令。返回时才产生中断请求,转到设备驱动,然后转到用户态。

2、非阻塞I/O:“Don’t Wait”;发出请求后不等待立即返回,返回值为成功传输的字节数
在这里插入图片描述

3、异步I/O:“Tell me later”; 读数据时,使用指针标记好用户缓冲区,立即返回,稍后内核将填充缓冲区并通知用户;写数据内核写入完毕后通知用户。
在这里插入图片描述

14.2 I/O结构

在这里插入图片描述

  • 北桥连高速设备,南桥连I/O设备

  • CPU与设备的连接
    在这里插入图片描述

  • DMA,“Direct Memory Access(存储器直接访问)。这是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据。整个数据传输操作在一个称为"DMA控制器"的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外(开始和结束时候要做中断处理),在传输过程中CPU可以进行其他的工作(前提是未设置停止CPU访问)。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高”。

  • I/O指令

    • 通过I/O端口号访问访问设备寄存器
    • 特殊的CPU指令
      • out 0x21,AL
  • 内存映射I/O

    • 设备的寄存器/存储器被映射到内存物理地址空间
    • 通过内存load/store指令完成I/O操作
    • MMU设置映射,硬件跳线或程序在启动时设置地址
  • 内核I/O结构
    在这里插入图片描述

  • I/O请求生存周期
    在这里插入图片描述

14.3 I/O数据传输

  • CPU与设备控制器的数据传输:
  1. 程序控制I/O:
    a. 通过CPU的in/out或者load/store传输所有数据
    b. 特点是硬件简答,编程容易,但是消耗CPU时间和数据量成正比
    c.适用于简单的小型的设备I/O
  2. 直接内存访问(DMA)
    a. 设备控制器可直接访问系统总线
    b. 控制器直接与内存互相传输数据
    c. 特点是设备传输数据不影响CPU,只需要在开始和结束的时候CPU参与设置,适用于高吞吐量的I/O。
    在这里插入图片描述
  • I/O设备通知操作系统的机制
    • 操作系统需要了解设备状态
      • I/O操作完成时间
      • I/O操作遇到错误
  • 两种方式
    • CPU主动轮询
      a. I/O设备在特定状态寄存器中放置状态和错误信息
      b. 操作系统定期检测状态寄存器
      c. 特点是简单,I/O操作频繁或不可预测时开销较大,并且延时较大
    • 设备中断
      a. CPU在I/O之前设置任务参数
      b. CPU在发出I/O请求之后继续执行其他任务
      c. I/O设备处理I/O请求
      d. I/O设备处理完成时,触发CPU中断请求
      e. CPU接收中断,分发到相应中断处理例程
      f. 特点是处理不可预测事件事件效果好,但是中断较多时开销较高
  • 实际操作系统中一些设备可能结合了轮询和设备中断;
    • 如:高带宽网络设备
      • 第一次传入数据包之前采用中断;然后轮询后面的数据包直到硬件缓存为空。
  • 设备中断I/O处理流程
    在这里插入图片描述
    在这里插入图片描述

14.4 磁盘调度

  • 磁盘工作机制和性能参数
    在这里插入图片描述

  • 磁盘I/O传输时间
    在这里插入图片描述

  • 上图中的公式,Ta是访问时间,Ts是寻道时间,1/2r是旋转延时,1/r是旋转一周的时间,b/rN是传输时间,其中b是传输的比特数,N是磁道上的比特数,r是磁道转数。

  • 磁盘调度算法

    • 通过优化磁盘访问请求顺序来提高磁盘访问性能。

      • 寻道时间是磁盘访问最耗时的部分
      • 同时会有多个在同一磁盘上的I/O请求
      • 随机处理磁盘访问请求的性能表现很差
  • 调度算法:

  1. FIFO(先进先出算法):按顺序处理请求;公平对待所有进程;
    在这里插入图片描述

  2. SSTF(最短服务时间优先):选择离磁臂当前位置最近的请求执行;总是选择最短寻道时间;
    在这里插入图片描述

  3. 扫描算法:磁臂在一个方向上移动,访问所有未完成的请求,直到磁臂到达该方向上最后的磁道,也称电梯算法
    在这里插入图片描述
    在这里插入图片描述

  4. 循环扫描算法(C-SCAN):限制为仅在一个方向上扫描;当最后一个磁道也被访问过了后,磁臂返回到磁道的另外一端再次进行。

  5. C-LOOK算法:磁臂先到达该方向上最后一个请求的位置,然后立即反转,而不是先到最后点路径上的所有请求。

  6. N步扫描算法:一侧请求过多时,磁头会有粘着现象,后面磁道无法响应,将磁盘请求队列分成长度为N的子队列,按FIFO算法依次处理所有队列,扫描算法处理每个队列

    • 磁头粘着(Arm Stickiness)现象
      • SSTF,SCAN及CSCAN等算法中,如果一直在磁头所在位置的边上有请求,在这个位置的请求会优先响应,使其它位置得不到响应。可能出现磁头停留在某处不动的情况。
        在这里插入图片描述
  7. 双队列扫描算法:只有两个队列,交替使用扫描算法处理两个队列,新生成的I/O请求放入另一个队列中。
    在这里插入图片描述

14.5 磁盘缓存

  • 概念

    • 缓存是数据传输双方访问速度差异较大时引入的速度匹配中间层。
    • 磁盘缓存是磁盘扇区在内存中的缓存区。类似于虚拟内存管理,只是方向相反。但是磁盘的访问频率是远低于虚拟存储中的内存访问频率,因此磁盘缓存调度算法会比虚拟存储复杂。
  • 单缓存与双缓存
    在这里插入图片描述

  • 单缓存只有一个缓存区,任意时刻只有一端可以对缓存区进行操作,速度受到限制;

  • 双缓存包含两个缓存区,设备与用户进程可以分别操作一个缓冲区,当一个缓冲区1写完并且缓冲区2读完了,可以将两个缓冲区交换,继续操作。

  • 访问频率置换算法

  • 问题

    • 在一段密集磁盘访问之后, LFU算法的引用计数会增加到很大,之后的变化无法反应当前的引用情况。
  • 算法思路

    • 该算法考虑磁盘访问的密集特征,对密集引用不计数。
    • 在短周期内使用LRU算法,在长周期中使用LFU算法。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值