- 在块设备输入数据的过程中,首先把磁盘数据送到缓冲区,花费的时间为 T s T_s Ts,(简记为 T s T_s Ts过程)
- 然后把操作系统缓冲区的数据送到用户区,花费的时间为 T m T_m Tm,(简记为 T m T_m Tm过程)
- 最后用户进程对这批数据进行计算,花费的时间为 T c T_c Tc。(简记为 T c T_c Tc过程)
单缓冲的情况如下:
当
T
c
T_c
Tc过程与
T
m
T_m
Tm过程操作同一块缓冲区时,这两个操作不能并行(读写锁),
T
s
T_s
Ts过程和
T
m
T_m
Tm一直都不能并行
-
当 T s T_s Ts> T c T_c Tc,(上图)主要是 T m T_m Tm与 T s T_s Ts不能并行,因此:
- 总时间: T 总 T_总 T总 = n ∗ ( T s + T m ) + T c n*(T_s+T_m)+T_c n∗(Ts+Tm)+Tc
- 平均时间: T T T = n ∗ ( T s + T m ) + T c n \frac{n*(T_s+T_m)+T_c}{n} nn∗(Ts+Tm)+Tc ≈ \approx ≈ T s T_s Ts + T m T_m Tm
-
当 T s T_s Ts< T c T_c Tc,(上图)主要是 T m T_m Tm与 T c T_c Tc不能并行,因此:
- 总时间: T 总 T_总 T总 = n ∗ ( T c + T m ) + T s n*(T_c+T_m)+T_s n∗(Tc+Tm)+Ts
- 平均时间: T T T = n ∗ ( T c + T m ) + T s n \frac{n*(T_c+T_m)+T_s}{n} nn∗(Tc+Tm)+Ts ≈ \approx ≈ T c T_c Tc + T m T_m Tm
综上,单缓冲下平均时间 T ≈ T \approx T≈max( T s T_s Ts, T c T_c Tc)+ T m T_m Tm
双缓冲条件下:
T
s
T_s
Ts过程与
T
m
T_m
Tm过程可以并行,
T
m
T_m
Tm过程与
T
c
T_c
Tc过程不能并行
-
当 T s T_s Ts> T c T_c Tc时,(上图)由于 T m T_m Tm<< T c T_c Tc且 T m T_m Tm<< T s T_s Ts,所以:
- 总时间: T 总 T_总 T总 = n ∗ T s + T m + T c n * T_s+T_m+T_c n∗Ts+Tm+Tc
- 平均时间: T T T = n ∗ T s + T m + T c n \frac{n * T_s+T_m+T_c}{n} nn∗Ts+Tm+Tc ≈ \approx ≈ T s T_s Ts ≈ \approx ≈ max( T s T_s Ts, T c T_c Tc)
-
当 T s T_s Ts< T c T_c Tc时, T m T_m Tm与 T c T_c Tc不能并行,所以:
- 总时间: T 总 T_总 T总 = n ∗ ( T m + T c ) + T s n * (T_m+T_c)+T_s n∗(Tm+Tc)+Ts
- 平均时间: T T T = n ∗ ( T m + T c ) + T s n \frac{n * (T_m+T_c)+T_s}{n} nn∗(Tm+Tc)+Ts ≈ \approx ≈ T c T_c Tc + T m T_m Tm ≈ \approx ≈ max( T s T_s Ts, T c T_c Tc) + T m T_m Tm
但 T s T_s Ts< T c T_c Tc这种情况非常少,所以一般做题时填双缓冲的时间都填 T s T_s Ts> T c T_c Tc情况下的max( T s T_s Ts, T c T_c Tc)
综上,双缓冲平均时间为max( T s T_s Ts, T c T_c Tc)
题目:假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为10μs,由缓冲区送至用户区的时间是5μs,系统对每个磁盘块数据的处理时间为2μs。若用户需要将大小为10个磁盘块的Docl文件逐块从磁盘读入缓冲区,并送至用户区进行处理,那么采用单缓冲区需要花费的时间为( )μs;采用双缓冲区需要花费的时间为( )μs。
单缓冲区:(10+5)10+2=152
双缓冲区:1010+5+2=107