某操作系统采用双缓冲区传送磁盘上的数据。设一次从磁盘将数据传送到缓冲区所用时间为 T 1 ,一次将缓冲区中数据传送到用户区所用时间为 T 2 (假设 T 2 远小于 T 1 、 T 3 ),CPU 处理一次数据所用时间为 T 3 ,则处理该数据共重复 n 次该过程,系统所用总时间为( )。
A.
B.
C.
D.
[tag_link]
正确答案:D
在双缓冲区系统中,处理每个数据块需经历三个阶段:从磁盘读入缓冲区(时间 T 1 )、从缓冲区传送到用户区(时间 T 2 ,且 T 2 远小于 T 1 和 T 3 )、CPU 处理(时间 T 3 )。 双缓冲区允许重叠不同数据块的 I/O 操作与 CPU 处理,即当 CPU 处理一个数据块时,可以同时从磁盘读入下一个数据块。 处理 n 个数据块时,第一个数据块需顺序完成三个阶段,耗时 T 1 + T 2 + T 3 。 后续数据块的处理起始时间受限于磁盘读和 CPU 处理中的较慢者,因为读操作与 CPU 处理可并行,但各自串行执行。 因此,从第二个数据块开始,每个数据块的处理时间由 max ( T 1 , T 3 ) 主导,加上必须的传输时间 T 2 (已包含在第一个块中)。 总时间即为第一个块的完整时间加上后续 n − 1 个块的最大阶段时间,即 ( n − 1 ) × max ( T 1 , T 3 ) + T 1 + T 2 + T 3 。 若 T 1 ≥ T 3 ,总时间为 n × T 1 + T 2 + T 3 ; 若 T 3 > T 1 ,总时间为 T 1 + T 2 + n × T 3 。 两种情形均与选项 D 一致。 其他选项未正确反映重叠操作的时间优化,故错误。