📌 经典例题
假设磁盘块与缓冲区大小相同,每个盘块:
- 读入缓冲区的时间 T = 10 微秒(μs)
- 由缓冲区送至用户区的时间 M = 5 微秒(μs)
- 在用户区内处理该数据块的时间 C = 2 微秒(μs)
用户需要将一个包含 10 个磁盘块 的文件逐块从磁盘读入缓冲区,并送至用户区进行处理。
问:
- 使用 单缓冲区 时,总共需要多少时间?
- 使用 双缓冲区 时,总共需要多少时间?
✅ 解题思路与公式
一、单缓冲区(Single Buffer)
- 特点:I/O 操作和 CPU 处理不能完全并行。必须等当前块从缓冲区送到用户区并处理完后,才能开始读取下一块。
- 总时间公式 :
总时间=n×(T+M)+C \text{总时间} = n \times (T + M) + C 总时间=n×(T+M)+C
其中:- nnn 是磁盘块数
- 最后一块处理完才算结束,所以加一次 C
⚠️ 注意:有些资料写成 (T+M+C)+(n−1)(T+M)(T + M + C) + (n - 1)(T + M)(T+M+C)+(n−1)(T+M),其实等价于上面公式。
代入数值:
10×(10+5)+2=150+2=152 μs 10 \times (10 + 5) + 2 = 150 + 2 = \boxed{152\ \mu s} 10×(10+5)+2=150+2=152 μs
二、双缓冲区(Double Buffer)
- 特点 :可以实现 I/O 与 CPU 处理的部分重叠。当一个缓冲区在向用户区传送/被处理时,另一个缓冲区可以同时从磁盘读入下一块数据。
- 前提条件 :通常要求 M+C≤TM + C \leq TM+C≤T,这样 I/O 才不会等待 CPU(本题满足:5+2=7 < 10)
- 总时间公式 :
总时间=T×n+M+C \text{总时间} = T \times n + M + C 总时间=T×n+M+C
解释:
- 第一块:读入(T)→ 送用户区(M)→ 处理(C)
- 从第二块开始,每块只需 T 时间(因为送用户区和处理可以在下一块读入时并行完成)
- 最后仍需加上最后一次的 M 和 C(因为最后一块读完后还要送和处理)
代入数值:
10×10+5+2=100+7=107 μs 10 \times 10 + 5 + 2 = 100 + 7 = \boxed{107\ \mu s} 10×10+5+2=100+7=107 μs
🔍 答案总结
| 缓冲方式 | 总耗时(微秒) |
|---|---|
| 单缓冲区 | 152 μs |
| 双缓冲区 | 107 μs |
💡 节省时间 :152 − 107 = 45 微秒
📚 考点提示(软考重点)
- 理解单/双缓冲的工作流程(画时间线图最直观)
- 掌握两个核心公式
- 注意题目是否满足双缓冲并行条件(即 M + C ≤ T),若不满足,双缓冲优势会减弱,计算方式可能不同(但软考一般默认满足)