Skip to content

通道方式

考情分析

通道方式是 408 大纲中四种 I/O 控制方式(程序查询、中断、DMA、通道)的最后一种。考查频率不高,但属于大纲明确要求的内容,主要以选择题的概念辨析出现。重点是理解通道与 DMA 的层级关系、三种通道类型的区别。

通道的基本思想

DMA 解决了"数据传输不经过 CPU"的问题,但 DMAC 仍然只能处理一种简单的传输任务,且每次传输的参数都要 CPU 设置。当系统中有大量 I/O 设备时,CPU 仍然要频繁参与 DMA 的初始化工作。

通道(Channel) 的核心思想是:让一个独立的"小处理器"去管理一组 I/O 设备,CPU 只需要发出一条 I/O 指令,剩下的所有事情(设备选择、数据传输、缓冲管理、错误处理)都由通道完成。

CPU通道指令通道DMA/设备控制器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
总数据率很高
复用方式字节交叉独占块交叉

通道的工作流程

  1. CPU 发出 I/O 指令:CPU 执行一条"启动 I/O"指令,指明要操作的通道号、设备号和通道程序在内存中的地址
  2. 通道取指执行:通道从内存中取出通道程序的第一条通道指令,开始执行
  3. 设备控制器响应:通道指令通过设备控制器驱动具体设备完成数据传输
  4. 通道独立工作:CPU 在通道执行期间可以处理其他任务
  5. 传输完成中断:通道程序执行完毕后,通道向 CPU 发送 I/O 完成中断
  6. CPU 后处理:CPU 响应中断,处理传输结果

整个过程中,CPU 只参与了第 1 步和第 6 步,中间的所有 I/O 工作都由通道独立完成。

通道方式的优缺点

优点

  • 极大解放了 CPU——一次启动可完成多个数据块的复杂传输
  • 通道有独立的指令系统,能处理复杂的 I/O 逻辑
  • 多通道并行工作,提高整个系统的 I/O 吞吐能力
  • 适合需要高 I/O 并发的大型机、服务器环境

缺点

  • 通道本身硬件成本高
  • 编写和调试通道程序复杂
  • 在 PC 等中小型系统中,通道的成本和复杂度收益不划算,所以现代 PC 不使用真正的通道,而是用 DMA + 总线主控(bus mastering)来达到类似效果

I/O 控制方式的演进

408 大纲要求掌握 I/O 控制方式的发展演进:

程序查询中断驱动DMA通道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,但硬件成本高、编程复杂,主要用在大型机环境

真题练习