Appearance
通道方式
大纲定位
本条已不在现行大纲内
现行 408 大纲「六(三)I/O 方式」只列了三种:程序查询方式、程序中断方式、DMA 方式,没有通道方式。
那为什么还留着这篇:通道是 DMA 之上的一层。理解「DMA 只搬一段数据,通道能执行一串通道指令」这个层级关系,反过来能把仍在纲内的 DMA 边界看得更清——DMA 控制器做什么、不做什么。
怎么分配时间:把 程序查询与中断方式、DMA 方式 两篇吃透是正事。本篇已按纲外定位压缩到只保留与 DMA 的边界对比,读一遍即可,不需要记忆。
考情分析
408 的题型只有单项选择题和综合应用题两类。统考对 I/O 方式的考查集中在程序查询、中断、DMA 三种;通道不作为独立考点。本篇的价值在于把 I/O 控制方式的演进链条补完整。
通道的基本思想
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。通道的灵活性来自它能执行通道程序。
I/O 控制方式的演进
把五种方式排成一条线,能看清每一步把哪部分工作从 CPU 手里拿走了——其中前三种在统考大纲内:
每一步演进的核心都是减少 CPU 在 I/O 中的参与程度:
| 方式 | CPU 参与程度 | 说明 |
|---|---|---|
| 程序查询 | 完全参与(轮询) | CPU 一直检查设备状态 |
| 中断驱动 | 中度参与(每字节中断一次) | CPU 被设备打断处理 |
| DMA | 少量参与(每数据块一次) | CPU 只需启动和接收完成中断 |
| 通道 | 极少参与(多个数据块一次) | CPU 启动后通道独立工作 |
| I/O 处理机 | 几乎不参与 | 专用 I/O 处理机管理整个 I/O 子系统 |
通道是 DMA 的进一步发展,也是 I/O 处理机的雏形。
只需带走的三句话
- 通道是 DMA 的"上司":它有自己的指令系统,能自主执行一段 I/O 程序;DMA 控制器只能做一次参数固定的搬运,参数还得 CPU 来设。
- 通道不是真正的 CPU:它是能力受限的专用处理器,只能执行有限的通道指令,且必须由主 CPU 启动,不能独立工作。
- 现代 PC 没有通道:用 DMA + 总线主控(bus mastering,即设备可以主动申请并接管总线)达到了类似效果。通道方式主要存在于大型机环境。