某计算机系统输入/输出采用双缓冲工作方式,其工作过程如下图所示,假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间T为 10μs,由缓冲区送至用户区的时间 M 为 6μs,系统对每个磁盘块数据的处理时间 C 为 2μs。若用户需要将大小为 10 个磁盘块的 Doc1 文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用双缓冲需要花费的时间为 (问题1) μs,比使用单缓冲节约了 (问题2) μs时间。

缓冲机制核心是缓解I/O设备与CPU的速度不匹配问题,单缓冲与双缓冲是两种基础实现方案。单缓冲模式下,磁盘读入缓冲区、缓冲区数据传至用户区为连续不可拆分的阶段,必须与数据处理阶段串行执行,处理n个数据块时,若读入加传区的总时间远大于处理时间,总耗时为(读入时间T+传区时间M+处理时间C)加上(n-1)倍的T+M,因为每次都要等缓冲区完成读入和传区才能开启下一轮读入。双缓冲模式通过设置两个独立缓冲区交替使用,可让磁盘读入操作与缓冲区传区、数据处理操作并行进行,当读入时间T不小于M+C时,n个数据块总耗时为T+M+C+(n-1)*T,后续每个数据块仅需等待读入时间即可;若T小于M+C,后续每个块耗时则取T与M+C的最大值。双缓冲打破了单缓冲中缓冲区只能被单操作占用的瓶颈,让I/O与计算操作尽可能重叠,在批量处理连续数据块的场景中,相比单缓冲能大幅减少总耗时,两者的时间差就是双缓冲节约的时间,这类机制常应用于磁盘连续读写、网络批量数据接收等场景。
此题看起来考察磁盘管理。
问题(1):在双缓冲方式下,第一个磁盘块读入缓冲区时间,传送到用户区时间,处理时间,这三个操作依次进行,总时间为 。从第二个磁盘块开始,由于双缓冲机制,磁盘块读入缓冲区的操作可以和缓冲区数据传送到用户区及数据处理操作并行。后续每个磁盘块实际增加的时间是(因为并行时,以最长的读入时间为间隔),一共个磁盘块,除去第一个磁盘块,还有个,所以总时间为 。
问题(2):54 μs。在单缓冲方式下,磁盘一定要等缓冲区的数据被加载到处理区后才能处理。这里分为两段流水,一段是读入缓冲区+缓冲区传送到用户去,这一段是不可分的,另一段是数据处理,即先读入缓冲区()+再传送到用户区()是一个整体,最后处理(),这是一个流水线操作,那么根据流水线公式,个磁盘块总时间为 。双缓冲时间为,所以节约的时间为 。
再回头看和双缓冲区的区别,之前单缓冲区之所以在缓冲传送到用户不能写入,是因为这里假定缓冲区是一个只能被单一线程处理的,只要这个区域被读写你就不能用。类似被加了锁。双缓冲区通过建立额外的缓冲通道实现了在缓冲区 1 被使用的时候,不影响磁盘块的继续写入所以效率更高。
