单缓冲和双缓冲的时间计算

  • 在块设备输入数据的过程中,首先把磁盘数据送到缓冲区,花费的时间为 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一直都不能并行
单缓冲和双缓冲的时间计算_第1张图片

  • 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 Tmax( 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过程不能并行
单缓冲和双缓冲的时间计算_第2张图片

  • 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 nTs+Tm+Tc
    • 平均时间: T T T = n ∗ T s + T m + T c n \frac{n * T_s+T_m+T_c}{n} nnTs+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
双缓冲区:10
10+5+2=107

你可能感兴趣的:(软考知识点记录)