Appearance
通道方式
考情分析
通道方式是 408 大纲中四种 I/O 控制方式(程序查询、中断、DMA、通道)的最后一种。考查频率不高,但属于大纲明确要求的内容,主要以选择题的概念辨析出现。重点是理解通道与 DMA 的层级关系、三种通道类型的区别。
通道的基本思想
DMA 解决了"数据传输不经过 CPU"的问题,但 DMAC 仍然只能处理一种简单的传输任务,且每次传输的参数都要 CPU 设置。当系统中有大量 I/O 设备时,CPU 仍然要频繁参与 DMA 的初始化工作。
通道(Channel) 的核心思想是:让一个独立的"小处理器"去管理一组 I/O 设备,CPU 只需要发出一条 I/O 指令,剩下的所有事情(设备选择、数据传输、缓冲管理、错误处理)都由通道完成。
可以把通道理解为"专门做 I/O 的弱 CPU"——它有自己的指令系统(通道指令),能从内存中读取通道程序并执行。
通道与 DMA、CPU 的关系
| 层级 | 谁控制 | 工作内容 |
|---|---|---|
| CPU | 操作系统 | 发出 I/O 指令,启动通道 |
| 通道 | 通道程序 | 选择设备、组织数据传输、处理 I/O 中断 |
| 设备控制器(含 DMAC) | 通道命令 | 直接驱动具体设备完成数据传送 |
| I/O 设备 | 控制器 | 物理读写 |
CPU 把"做什么"告诉通道,通道再把"怎么做"分解成具体的设备操作。CPU 在通道工作期间可以执行其他程序,只在通道完成后通过中断通知 CPU。
与 DMA 的区别
| 特性 | DMA 方式 | 通道方式 |
|---|---|---|
| 控制器复杂度 | 简单(硬件控制器) | 复杂(有独立的指令系统) |
| 一次能管理的设备 | 一个 | 多个 |
| 数据传输的灵活性 | 固定格式 | 可以处理多种格式 |
| CPU 介入程度 | 每次传输都要 CPU 设置参数 | 一次启动可完成多个数据块的传输 |
| 适用场景 | 高速字符/块设备(磁盘) | 大型机的复杂 I/O 环境 |
简单说:DMA 是定制硬件,通道是可编程的小 CPU。通道的灵活性来自它能执行通道程序。
三种通道类型
408 大纲明确要求掌握三种通道类型的特点和适用场景。
字节多路通道(Byte Multiplexer Channel)
字节多路通道用于连接多个低速设备(如键盘、打印机、字符终端)。多个设备分时共享通道的传输能力,每次传输一个字节就切换到下一个设备。
设备 A: A1 . . A2 . . A3 . . A4 . .
设备 B: . B1 . . B2 . . B3 . . B4 .
设备 C: . . C1 . . C2 . . C3 . . C4
↑ ↑ ↑
通道按字节交替服务特点:
- 服务多个低速设备
- 字节交叉复用,每次传输 1 字节
- 总数据率 = 各设备数据率之和
- 设备之间相互独立
选择通道(Selector Channel)
选择通道用于连接少量高速设备(如磁盘、磁带)。通道在某一时刻只为一个设备服务,把整个数据块传输完毕后才切换到下一个设备。
设备 A: A1 A2 A3 A4 . . . . . . . .
设备 B: . . . . B1 B2 B3 B4 . . . .
设备 C: . . . . . . . . C1 C2 C3 C4
↑ ↑
独占传输完才切换特点:
- 服务少量高速设备
- 成组传输,独占通道直到一个数据块完成
- 数据率高,但同一时间只能为一个设备工作
- 适合磁盘等大块数据传输
数组多路通道(Block Multiplexer Channel)
数组多路通道是字节多路和选择通道的折中。它服务多个高速设备,但传输单位是数据块(而不是字节),多个设备的数据块可以交叉传输。
设备 A: [A 块 1] . . . . . . [A 块 2]
设备 B: . . . . [B 块 1] . . . . . .
设备 C: . . . . . . . . [C 块 1] . .
↑ ↑ ↑
块级别交叉,每个块独立传输特点:
- 服务多个高速设备
- 块交叉复用,每个块独占通道直到传完
- 兼顾了选择通道的高速和字节多路的并发性
- 是大型机最常用的通道类型
三种通道对比
| 特性 | 字节多路 | 选择 | 数组多路 |
|---|---|---|---|
| 设备类型 | 多个低速 | 少量高速 | 多个高速 |
| 数据传输单位 | 字节 | 数据块 | 数据块 |
| 同时服务设备数 | 多 | 1 | 多 |
| 总数据率 | 中 | 高 | 很高 |
| 复用方式 | 字节交叉 | 独占 | 块交叉 |
通道的工作流程
- CPU 发出 I/O 指令:CPU 执行一条"启动 I/O"指令,指明要操作的通道号、设备号和通道程序在内存中的地址
- 通道取指执行:通道从内存中取出通道程序的第一条通道指令,开始执行
- 设备控制器响应:通道指令通过设备控制器驱动具体设备完成数据传输
- 通道独立工作:CPU 在通道执行期间可以处理其他任务
- 传输完成中断:通道程序执行完毕后,通道向 CPU 发送 I/O 完成中断
- CPU 后处理:CPU 响应中断,处理传输结果
整个过程中,CPU 只参与了第 1 步和第 6 步,中间的所有 I/O 工作都由通道独立完成。
通道方式的优缺点
优点:
- 极大解放了 CPU——一次启动可完成多个数据块的复杂传输
- 通道有独立的指令系统,能处理复杂的 I/O 逻辑
- 多通道并行工作,提高整个系统的 I/O 吞吐能力
- 适合需要高 I/O 并发的大型机、服务器环境
缺点:
- 通道本身硬件成本高
- 编写和调试通道程序复杂
- 在 PC 等中小型系统中,通道的成本和复杂度收益不划算,所以现代 PC 不使用真正的通道,而是用 DMA + 总线主控(bus mastering)来达到类似效果
I/O 控制方式的演进
408 大纲要求掌握 I/O 控制方式的发展演进:
每一步演进的核心都是减少 CPU 在 I/O 中的参与程度:
| 方式 | CPU 参与程度 | 说明 |
|---|---|---|
| 程序查询 | 完全参与(轮询) | CPU 一直检查设备状态 |
| 中断驱动 | 中度参与(每字节中断一次) | CPU 被设备打断处理 |
| DMA | 少量参与(每数据块一次) | CPU 只需启动和接收完成中断 |
| 通道 | 极少参与(多个数据块一次) | CPU 启动后通道独立工作 |
| I/O 处理机 | 几乎不参与 | 专用 I/O 处理机管理整个 I/O 子系统 |
通道是 DMA 的进一步发展,也是 I/O 处理机的雏形。
易混淆知识点
1. 通道是真正的 CPU 吗?
不是。通道是一种专用的、能力较弱的处理器,只能执行有限的通道指令(不是通用指令集),主要用于 I/O 控制。它依赖主 CPU 启动,不能独立工作。
2. 通道和 DMA 有什么关系?
通道是 DMA 的"上司"。一个通道下面可以挂多个设备控制器(含 DMAC),通道决定哪个设备何时使用 DMA 进行数据传输。可以理解为:通道负责调度,DMA 负责搬运。
3. 字节多路通道和数组多路通道都能服务多个设备,区别是什么?
字节多路是字节级交叉(每次只传一个字节),适合多个低速设备;数组多路是数据块级交叉(每个块独占完才让),适合多个高速设备。前者切换粒度细,后者效率高。
4. 现代 PC 有通道吗?
严格意义上没有。现代 PC 用 DMA + 总线主控(bus mastering)实现了类似的效果,但没有真正的通道处理器。通道方式主要用在大型机、小型机环境。
考点清单
- 通道是 I/O 控制的最高层次,比 DMA 更复杂、更灵活
- 通道有自己的指令系统(通道指令)和通道程序,能独立执行 I/O 任务
- 三种通道类型:字节多路(多个低速设备,字节交叉)、选择通道(少量高速设备,独占)、数组多路(多个高速设备,块交叉)
- 通道与 DMA 的关系:通道在 DMA 之上,一个通道可以管理多个 DMAC
- I/O 控制方式演进:程序查询 → 中断 → DMA → 通道 → I/O 处理机,CPU 参与度逐步降低
- 通道方式释放了 CPU,但硬件成本高、编程复杂,主要用在大型机环境