文章目录
-
- [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:设备空闲,可进行数据传送。
- 在设备控制器中设置一个状态触发器(标志位),如
- 工作流程 :
- CPU 向设备发出 I/O 指令。
- CPU 不停地查询 设备的
busy状态。 - 如果
busy == 1,CPU 就一直循环测试(忙等),不能做其他事。 - 直到
busy == 0,CPU 才启动数据传送。
- 缺点 :CPU利用率极低。CPU 绝大部分时间都浪费在查询状态的循环中,无法与外设并行工作。
7.2.2 中断技术
Interrupt-Driven I/O
中断技术的出现是计算机系统结构的一个重要突破 ,它实现了 CPU 和外设的并行工作。
1. 基本原理
- 改变执行顺序:CPU 不再被动等待,而是继续执行当前程序。
- 主动通知 :当外设完成 I/O 操作后,主动向 CPU 发出中断请求。
- 响应流程 :
- CPU 暂停当前程序的执行。
- 保护现场:保存当前程序的信息(如程序计数器 PC、寄存器内容)。
- 响应中断:转去执行中断处理程序(进行数据读取)。
- 恢复现场:处理完毕后,CPU 返回断点,继续执行原程序。
2. 缺点与局限性
虽然实现了并行,但在高速设备或大量数据传输时存在问题:
- 中断频率过高 :
- 中断通常是以字节或字为单位发生的。如果传输大量数据,每传一个字就要打断一次 CPU,CPU 会疲于奔命。
- 例如:如果缓冲区很小,满了就中断,会耗去大量 CPU 时间。
- 数据丢失风险 :
- 如果多种外设同时并发,中断次数急剧增加,CPU 来不及响应,可能导致数据丢失。
- CPU 干预仍较多:数据的传送(从设备到内存)依然需要 CPU 亲自搬运(通过寄存器中转)。
7.2.3 DMA 方式
Direct Memory Access
为了解决中断方式在高速外设 和大批量数据传输时的瓶颈,引入了 DMA(直接存储器访问) 方式。
1. 为什么需要 DMA?
- 中断方式中,数据必须经过 CPU(设备 -> CPU寄存器 -> 内存),且每次都需要保存/恢复现场,开销大。
- 高速外设(如磁盘)传输速率极快,中断方式跟不上。
2. 基本概念 (核心)
- 脱离 CPU :外设和内存直接交换数据,CPU 不再参与具体的数据搬运。
- 总线控制权转移 :在传输期间,系统总线的使用权由 CPU 转交给 DMA 控制器。
- 成块传输 :数据传输的基本单位是数据块(Block),而不是字节。
3. DMA 工作的主要步骤
- 预处理 :当进程需要输入数据时,CPU 把内存起始地址 、字节数 、数据传输方向送入 DMA 控制器。
- CPU 让出:提出请求的进程进入等待状态,CPU 调度其他进程运行(CPU 甩手不管了)。
- 数据传输 :设备数据通过 DMA 控制器,直接写入内存(不经过 CPU)。
- 后处理 :
- 只有在整块数据全部传送完毕后。
- 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。