I/O系统¶
概述¶
I/O系统
输入输出系统是计算机系统中实现数据输入、输出和存储的子系统,包括I/O设备、设备控制器和I/O软件。
I/O系统组成¶
graph TB
A[I/O系统] --> B[I/O设备]
A --> C[设备控制器]
A --> D[I/O接口]
A --> E[I/O软件]
B --> B1[输入设备]
B --> B2[输出设备]
B --> B3[存储设备]
C --> C1[控制逻辑]
C --> C2[数据缓冲]
C --> C3[状态寄存器]
style A fill:#E3F2FD
style B fill:#E8F5E9
style C fill:#FFF3E0
style D fill:#F3E5F5
style E fill:#FCE4EC
I/O设备分类¶
输入设备¶
输入设备
将外部信息转换为计算机能识别的形式。
常见设备:
- 键盘: 文本输入
- 鼠标: 指针控制
- 扫描仪: 图像输入
- 麦克风: 音频输入
- 摄像头: 视频输入
输出设备¶
输出设备
将计算机处理结果转换为外部形式。
常见设备:
- 显示器: 图像显示
- 打印机: 文档打印
- 音响: 音频输出
- 投影仪: 大屏显示
存储设备¶
存储设备
用于永久存储数据的外部存储器。
常见设备:
- 硬盘(HDD): 磁盘存储
- 固态硬盘(SSD): 闪存存储
- 光盘: CD、DVD、蓝光
- U盘: 便携式存储
I/O控制方式¶
1. 程序查询方式¶
程序查询方式
CPU不断查询设备状态,直到设备就绪。
graph LR
A[启动I/O] --> B[查询状态]
B --> C{设备就绪?}
C -->|否| B
C -->|是| D[数据传输]
D --> E[结束]
style A fill:#E3F2FD
style B fill:#E8F5E9
style C fill:#FFF3E0
style D fill:#F3E5F5
style E fill:#FCE4EC
特点:
- 实现简单
- CPU利用率低
- 适合低速设备
2. 程序中断方式¶
程序中断方式
设备就绪时向CPU发出中断请求。
中断处理过程:
- 设备就绪,发出中断请求
- CPU响应中断
- 保护现场
- 执行中断服务程序
- 恢复现场
- 返回断点
特点:
- CPU利用率高
- 响应及时
- 适合中低速设备
3. DMA方式¶
DMA(直接存储器访问)
数据直接在内存和I/O设备间传输,无需CPU干预。
DMA传输过程:
sequenceDiagram
participant CPU
participant DMA
participant Memory
participant Device
CPU->>DMA: 初始化DMA
DMA->>Device: 请求传输
Device->>DMA: 数据就绪
DMA->>Memory: 直接传输数据
DMA->>CPU: 传输完成中断
特点:
- 传输速度快
- CPU开销小
- 适合高速块传输
4. 通道方式¶
通道方式
专用I/O处理器,独立执行I/O程序。
通道类型:
- 字节多路通道: 多个低速设备分时共享
- 选择通道: 独占通道,高速设备
- 数组多路通道: 多个高速设备分时共享
特点:
- CPU负担最小
- 并行处理能力强
- 适合大量I/O操作
I/O控制方式比较¶
| 方式 | CPU干预 | 传输速度 | 适用设备 |
|---|---|---|---|
| 程序查询 | 全程干预 | 慢 | 低速设备 |
| 程序中断 | 部分干预 | 中 | 中低速设备 |
| DMA | 开始和结束 | 快 | 高速块设备 |
| 通道 | 最少 | 最快 | 大量I/O |
I/O缓冲技术¶
缓冲技术
在内存中开辟缓冲区,缓解CPU与I/O设备速度不匹配。
缓冲类型¶
1. 单缓冲
单缓冲
设置一个缓冲区。
2. 双缓冲
双缓冲
设置两个缓冲区,交替使用。
3. 循环缓冲
循环缓冲
多个缓冲区组成循环队列。
4. 缓冲池
缓冲池
公用缓冲区集合,供多个进程共享。
SPOOLing技术¶
SPOOLing(假脱机)
利用磁盘作为缓冲,实现虚拟设备。
组成:
- 输入井: 模拟脱机输入的磁盘区域
- 输出井: 模拟脱机输出的磁盘区域
- 输入缓冲区: 内存中的输入缓冲
- 输出缓冲区: 内存中的输出缓冲
优点:
- 提高I/O速度
- 将独占设备变为共享设备
- 实现虚拟设备