【OS笔记39】:设备管理 - 数据传送控制方式

文章目录

    • [7.2.1 查询等待方式](#7.2.1 查询等待方式)
    • [7.2.2 中断技术](#7.2.2 中断技术)
      • [1. 基本原理](#1. 基本原理)
      • [2. 缺点与局限性](#2. 缺点与局限性)
    • [7.2.3 DMA 方式](#7.2.3 DMA 方式)
      • [1. 为什么需要 DMA?](#1. 为什么需要 DMA?)
      • [2. 基本概念 (核心)](#2. 基本概念 (核心))
      • [3. DMA 工作的主要步骤](#3. DMA 工作的主要步骤)
      • [4. DMA 与 中断方式的比较](#4. DMA 与 中断方式的比较)
      • 小结

核心任务 :设备管理的主要任务之一,就是控制设备内存/CPU 之间的数据传送。
演变逻辑:随着计算机技术的发展,为了减少CPU在I/O操作中的干预,提高并行性,产生了以下几种控制方式。

7.2.1 查询等待方式

Programmed I/O

又称为程序轮询方式循环测试方式。这是最古老、最简单,但效率最低的方式。

  • 基本原理
    • 在设备控制器中设置一个状态触发器(标志位),如 busy
    • busy = 1:设备正在忙(正进行数据处理),I/O 未结束。
    • busy = 0:设备空闲,可进行数据传送。
  • 工作流程
    1. CPU 向设备发出 I/O 指令。
    2. CPU 不停地查询 设备的 busy 状态。
    3. 如果 busy == 1,CPU 就一直循环测试(忙等),不能做其他事。
    4. 直到 busy == 0,CPU 才启动数据传送。
  • 缺点CPU利用率极低。CPU 绝大部分时间都浪费在查询状态的循环中,无法与外设并行工作。

7.2.2 中断技术

Interrupt-Driven I/O

中断技术的出现是计算机系统结构的一个重要突破 ,它实现了 CPU 和外设的并行工作

1. 基本原理

  • 改变执行顺序:CPU 不再被动等待,而是继续执行当前程序。
  • 主动通知 :当外设完成 I/O 操作后,主动向 CPU 发出中断请求
  • 响应流程
    1. CPU 暂停当前程序的执行。
    2. 保护现场:保存当前程序的信息(如程序计数器 PC、寄存器内容)。
    3. 响应中断:转去执行中断处理程序(进行数据读取)。
    4. 恢复现场:处理完毕后,CPU 返回断点,继续执行原程序。

2. 缺点与局限性

虽然实现了并行,但在高速设备或大量数据传输时存在问题:

  1. 中断频率过高
    • 中断通常是以字节或字为单位发生的。如果传输大量数据,每传一个字就要打断一次 CPU,CPU 会疲于奔命。
    • 例如:如果缓冲区很小,满了就中断,会耗去大量 CPU 时间。
  2. 数据丢失风险
    • 如果多种外设同时并发,中断次数急剧增加,CPU 来不及响应,可能导致数据丢失。
  3. CPU 干预仍较多:数据的传送(从设备到内存)依然需要 CPU 亲自搬运(通过寄存器中转)。

7.2.3 DMA 方式

Direct Memory Access

为了解决中断方式在高速外设 和大批量数据传输时的瓶颈,引入了 DMA(直接存储器访问) 方式。

1. 为什么需要 DMA?

  • 中断方式中,数据必须经过 CPU(设备 -> CPU寄存器 -> 内存),且每次都需要保存/恢复现场,开销大。
  • 高速外设(如磁盘)传输速率极快,中断方式跟不上。

2. 基本概念 (核心)

  • 脱离 CPU :外设和内存直接交换数据,CPU 不再参与具体的数据搬运。
  • 总线控制权转移 :在传输期间,系统总线的使用权由 CPU 转交给 DMA 控制器
  • 成块传输 :数据传输的基本单位是数据块(Block),而不是字节。

3. DMA 工作的主要步骤

  1. 预处理 :当进程需要输入数据时,CPU 把内存起始地址字节数数据传输方向送入 DMA 控制器。
  2. CPU 让出:提出请求的进程进入等待状态,CPU 调度其他进程运行(CPU 甩手不管了)。
  3. 数据传输 :设备数据通过 DMA 控制器,直接写入内存(不经过 CPU)。
  4. 后处理
    • 只有在整块数据全部传送完毕后。
    • DMA 控制器才向 CPU 发出中断信号
    • CPU 收到信号后,进行后续处理(如检查传输是否正确)。

4. DMA 与 中断方式的比较

比较维度 中断方式 (Interrupt) DMA 方式
中断时机 数据寄存器满(每传送一个字/字节 整块数据传送完成后
CPU 干预频率 极高(每次传送都要打断) 低(开始和结束时才打断)
数据流向 设备 <-> CPU <-> 内存 设备 <-> 内存 (直接)
控制者 CPU 程序控制 DMA 控制器 硬件控制
适用场景 低速设备 (键盘、鼠标) 高速设备 (磁盘、磁带)

小结

  • 轮询:CPU 亲力亲为,一直盯着。(效率最低)
  • 中断:CPU 干别的,设备传完一个字喊一次 CPU。(适合低速)
  • DMA:CPU 交代任务给 DMA,DMA 搬完一整车数据才喊一次 CPU。(适合高速,块传输)

下一节:

虽然 DMA 已经很强了,但它还不够独立。下一节 7.2.4 通道控制方式 是一种比 DMA 更高级的"小CPU",它能执行专门的 I/O 指令,进一步解放 CPU。

相关推荐
kkkAloha2 小时前
JS笔记汇总
开发语言·javascript·笔记
map_vis_3d3 小时前
JSAPIThree 加载简单点图层学习笔记:SimplePoint 散点可视化
笔记·学习·信息可视化·mapvthree·jsapithree·simplepoint·点图层
蓝田生玉1238 小时前
BEVFormer论文阅读笔记
论文阅读·笔记
西瓜堆8 小时前
提示词工程学习笔记: 工程技术行业提示词推荐
笔记·学习
wxr061610 小时前
GOF笔记
笔记·适配器·ooad
charlie11451419111 小时前
嵌入式的现代C++教程——constexpr与设计技巧
开发语言·c++·笔记·单片机·学习·算法·嵌入式
童话名剑11 小时前
锚框 与 完整YOLO示例(吴恩达深度学习笔记)
笔记·深度学习·yolo··anchor box
2301_7833601313 小时前
关于RNAseq——从fastq到gene_counts全流程
笔记·学习
_李小白13 小时前
【AlohaMini学习笔记】第三天:AlohaMini相关技术
笔记·学习