软考-软件设计:操作系统-设备管理-单双缓冲区计算 作者:马育民 • 2025-04-02 12:36 • 阅读:10004 # 单缓冲区 [](https://www.malaoshi.top/upload/0/0/1GWs4Y7yUor.png) - 因为只有一个 `缓冲区`,`输入` 和 `传送` 是 **串行**。如果 **并行**,当 `传送` 时,又开始 `输入`,会导致 `缓冲区` 的数据被 **覆盖** - `传送` 和 `处理` 是 **并行** # 双缓冲区 [](https://www.malaoshi.top/upload/0/0/1GWs4hCbGaa.png) - 因为有2个 `缓冲区`,`输入` 和 `传送` 是 **并行**。即:当 `传送` 时,又开始 `输入`,由于有2个缓冲区,**不会** 导致 `缓冲区` 的数据被 **覆盖** - `传送` 和 `处理` 是 **并行** # 题 此时输入时间 `T` 为 `10us`,传送时间 `M` 为 `6us`,处理时间 `C` 为 `2us` 。若要将 `10` 个磁盘块送入缓冲区处理,请问 **单缓冲区** 和 **双缓冲区** 花费时间各为多少us? ### 分析 使用 流水线时间计算公式: ``` 取指时间 + 分析时间 + 执行时间 + ( n - 1 ) * 流水线周期 ``` 详见: https://www.malaoshi.top/show_1GWs2WrSUnR.html ### 单缓冲区 由上面可知: - 因为只有一个 `缓冲区`,`输入` 和 `传送` 是 **串行**,所以计算时,将 `输入` 和 `传送` 按一个整体算,即:`10us + 6us` - `传送` 和 `处理` 是 **并行** 所以 `流水线周期` 是 `10us + 6us = 10us` 套入上面公式: ``` (10us + 6us) + 2us + (10 - 1) * (10us + 6us) = 162us ``` ### 双缓冲区 由上面可知:`输入` 和 `传送`、`处理` 是 **并行** 所以 `流水线周期` 是 `10us` 套入上面公式: ``` 10us + 6us + 2us + (10 - 1) * 10us = 108us ``` 原文出处:http://malaoshi.top/show_1GWs5FB6FhJ.html