I/O软件的核心目标是管理硬件差异、提供统一接口、实现高效可靠的数据传输。
-
核心目标:
- 设备无关性: 应用程序无需关心具体硬件细节。
- 错误处理: 处理硬件错误和传输异常。
- 同步/异步传输: 支持阻塞(等待完成)和非阻塞(立即返回,后续通知)操作。
- 缓冲: 解决速度不匹配(CPU vs 外设)、协调传输单元大小、支持回写(
write-behind
)。 - 共享与独占: 管理设备访问(如磁盘共享,打印机独占)。
-
分层结构(核心思想):
- 用户级I/O软件: 库函数(如
printf
,fread
),提供用户友好接口。 - 设备无关操作系统软件(设备独立性层)
- 设备驱动程序
- 中断处理程序: 底层,响应硬件中断信号,唤醒阻塞的驱动程序。
- 用户级I/O软件: 库函数(如
好的!这些I/O技术的诞生均源于计算机核心矛盾:CPU高速计算能力与低速I/O设备之间的巨大速度差异。以下是各技术诞生的根本目的和作用解析:
设备管理采用技术
一、通道技术(Channel)
诞生目的:
解决大型机时代CPU被低速I/O设备频繁中断的问题(如早期IBM 360系统需同时管理数百台终端)。 核心作用:
✅ 卸载CPU负担:通过专用处理器(通道)独立管理I/O操作
✅ 实现并行计算:CPU执行计算任务时,通道可同时控制多个I/O设备
二、DMA技术(Direct Memory Access)
诞生目的:
消除每传输一个字节都需CPU中断的低效操作(如早期磁盘读取需CPU逐字节拷贝)。
核心作用: ✅ 免CPU干预:设备直接与内存交换数据
✅ 减少中断次数:从每字节中断1次 → 整块数据中断1次
三、缓冲技术(Buffering)
诞生目的:
缓解CPU处理速度 >> 设备I/O速度导致的CPU空等问题(如CPU需等待键盘输入)。
核心作用:
✅ 速度匹配:缓冲作为数据中转站
✅ 解耦生产/消费:
- 设备可持续写入缓冲
- CPU可批量读取数据
类型:
-
单缓冲:交替使用(设备↔缓冲↔内存)
-
双缓冲:并行处理(填充缓冲A时,消费缓冲B)
-
循环缓冲:环形队列持续流
四、SPOOLing技术(Simultaneous Peripheral Operations On-Line)
诞生目的:
突破物理独占设备无法并发使用的限制(如打印机只能被一个进程独占)。
核心作用:
✅ 虚拟化独占设备:将物理设备转化为多个“逻辑设备”
✅ 提高设备利用率:通过磁盘排队实现多任务“同时”使用
技术本质对比表
技术 | 解决的核心矛盾 | 关键创新思想 | 性能提升效果 |
---|---|---|---|
通道 | CPU被I/O控制频繁打断 | 专用I/O处理器 | 释放CPU 70%+ I/O负载 |
DMA | 字节传输中断开销过大 | 设备直连内存 | 中断次数降低1000倍+ |
缓冲 | CPU等待慢速设备 | 数据暂存区解耦 | CPU利用率提升30%-50% |
SPOOLing | 独占设备导致系统吞吐量下降 | 磁盘虚拟化+排队调度 | 设备利用率从20%→80%+ |
协同效应示例:打印文件
假设用户执行打印操作时四种技术如何协作:
- SPOOLing:将数据暂存至磁盘输出井(解决打印机独占)
- 缓冲:在打印机内存中建立环形缓冲(匹配CPU与打印头速度)
- DMA:将磁盘数据直传至打印机缓冲(避免CPU拷贝)
- 通道:若在大型机上,由通道独立控制打印流程(解放CPU)
💡 本质规律:所有I/O技术都在尝试弥合纳秒级CPU与毫秒级I/O之间的六个数量级速度鸿沟,通过硬件协作(通道/DMA)和软件调度(缓冲/SPOOLing)实现系统整体效率质的飞跃。
磁盘调度
磁盘调度算法的核心目标是减少磁头寻道时间,从而提升磁盘I/O性能。
一、算法诞生的根本问题
- 机械磁盘的物理限制:
- 磁头移动(寻道)耗时 >> 数据传输耗时(寻道时间占95%+)
- 例:10ms寻道 vs 0.1ms传输1个扇区
- 核心矛盾:
无序I/O请求导致磁头反复横跳,大幅降低吞吐量
二、经典调度算法
1. 先来先服务 (FCFS)
-
原理:按请求到达顺序服务
-
问题:磁头可能疯狂摆动(例:从磁道1→100→2→99)
- 适用场景:仅用于理论对比,实际系统极少使用
2. 最短寻道时间优先 (SSTF)
-
原理:优先服务离当前磁道最近的请求
-
优势:平均寻道时间显著降低
-
致命缺陷:饥饿现象(边缘磁道请求长期不被响应)
3. 电梯算法 (SCAN)
-
原理:
- 磁头单向移动(如从0→最大磁道)
- 途中响应所有路径上的请求
- 到达边界后反向移动
-
优势:公平性高,无饥饿
4. 单项扫描调度算法 (C-SCAN)
-
改进SCAN:到达边界后直接跳回起点(不响应返程请求)
-
特点:
-
请求响应时间更均匀
-
适合连续大文件读写(如视频流)
-
三、算法性能对比
算法 | 平均寻道时间 | 响应公平性 | 饥饿风险 | 适用场景 |
---|---|---|---|---|
FCFS | 最高 | 公平 | 无 | 仅教学示例 |
SSTF | 低 | 差 | 高 | 轻负载环境 |
SCAN | 中低 | 好 | 无 | 中负载通用系统 |
C-SCAN | 中 | 最好 | 无 | 流媒体服务器 |
💡 数据参考:在1000个随机请求测试中(磁道范围0-199):
- FCFS 平均寻道 100+ 磁道
- SSTF 降至 40-50 磁道