# 6.2 I/O控制方式 ## 一、程序直接控制方式 ### 1.1 基本原理 **思想**:CPU通过程序不断查询设备状态,直到设备就绪,然后进行数据传输。 ### 1.2 工作流程 ``` CPU发送命令给设备 ↓ CPU循环查询设备状态 ↓ 设备完成操作 ↓ CPU读取数据 ``` ### 1.3 特点 **优点**: - 实现简单 - 硬件要求低 **缺点**: - CPU利用率低(忙等待) - 不能实现设备与CPU并行工作 - 只适用于简单设备 --- ## 二、中断驱动方式 ### 2.1 基本原理 **思想**:CPU发出I/O命令后,继续执行其他任务,设备完成操作后发出中断,CPU响应中断进行数据传输。 ### 2.2 工作流程 ``` CPU发送命令给设备 ↓ CPU继续执行其他任务 ↓ 设备完成操作,发出中断 ↓ CPU响应中断,读取数据 ↓ CPU继续执行原任务 ``` ### 2.3 特点 **优点**: - CPU和设备可以并行工作 - CPU利用率高 **缺点**: - 每次数据传输都需要中断 - 中断处理开销大 - 不适合高速设备的大量数据传输 --- ## 三、DMA方式 ### 3.1 基本原理 **思想**:DMA控制器直接在设备和内存之间传输数据,不需要CPU干预。 ### 3.2 DMA控制器 **组成**: - **命令/状态寄存器**:接收CPU命令,报告状态 - **内存地址寄存器**:存放内存地址 - **数据计数器**:记录传输数据量 - **数据缓冲寄存器**:暂存数据 ### 3.3 工作流程 **预处理**: 1. CPU设置内存地址寄存器 2. CPU设置数据计数器 3. CPU设置传输方向 4. CPU启动DMA **数据传输**: 1. DMA控制器控制总线 2. 设备与内存直接传输数据 3. 每传输一个数据,内存地址寄存器+1,数据计数器-1 4. 数据计数器为0时,传输完成 **后处理**: 1. DMA发出中断 2. CPU响应中断,进行后处理 ### 3.4 特点 **优点**: - 数据传输不需要CPU干预 - 适合高速设备的大量数据传输 - 传输效率高 **缺点**: - 需要DMA控制器 - 硬件复杂 - 每次传输一个数据块才中断一次 ### 3.5 DMA与中断的区别 | 特性 | 中断 | DMA | |-----|------|-----| | 数据传输 | 需要CPU参与 | 不需要CPU参与 | | 中断频率 | 每个数据一次 | 每个数据块一次 | | 适用场景 | 低速设备、少量数据 | 高速设备、大量数据 | | CPU干预 | 多 | 少 | --- ## 四、通道控制方式 ### 4.1 基本原理 **思想**:使用专门的I/O处理机(通道)管理I/O操作,通道有自己的指令系统,可以独立执行I/O程序。 ### 4.2 通道类型 **字节多路通道**: - 连接多个低速设备 - 以字节为单位交叉传输 - 如:连接多个终端 **数组选择通道**: - 连接一个高速设备 - 以数据块为单位传输 - 独占使用 - 如:连接磁盘 **数组多路通道**: - 连接多个高速设备 - 以数据块为单位交叉传输 - 如:连接多个磁盘 ### 4.3 工作流程 1. **CPU执行管理程序**:准备通道程序 2. **CPU启动通道**:执行通道程序 3. **通道执行I/O操作**:控制设备传输数据 4. **通道发出中断**:I/O完成 5. **CPU响应中断**:进行后处理 ### 4.4 特点 **优点**: - 通道可以独立执行I/O操作 - CPU只需发出启动命令 - 适合大型系统的大量I/O操作 **缺点**: - 需要专门的通道硬件 - 成本高 - 复杂 --- ## 五、四种控制方式的比较 | 特性 | 程序直接控制 | 中断驱动 | DMA | 通道控制 | |-----|------------|---------|-----|---------| | CPU干预 | 全程 | 每个数据 | 每个数据块 | 启动和结束 | | 并行性 | 无 | 有 | 有 | 有 | | 传输单位 | 字 | 字 | 数据块 | 数据块 | | 适用设备 | 简单设备 | 低速设备 | 高速设备 | 大量高速设备 | | 硬件复杂度 | 低 | 中 | 高 | 很高 | | 传输效率 | 低 | 中 | 高 | 很高 | --- ## 六、考研重点 1. **四种I/O控制方式**: - 程序直接控制:原理、特点 - 中断驱动:原理、工作流程、特点 - DMA:原理、DMA控制器、工作流程、特点 - 通道控制:原理、通道类型、工作流程、特点 2. **DMA与中断的区别** 3. **四种方式的比较** --- *下一节:6.3 I/O软件层次结构*