单/双缓冲区花费的时间
单缓冲区
假设磁盘块与缓冲区大小相同,把每个磁盘块读入缓冲区记为T,磁盘块送入用户区记为M,系统对每个磁盘块数据的处理记为C。将Max(A,B)记作取A和B中较大的数,Min(A,B)记作取A和B中较小的数。

- 先读入磁盘块T1,然后送至用户区M1。M1执行完成以后,处理磁盘块C1和读入下一个磁盘块T2可以同时执行。如果T>C(即T2>C1),第一个磁盘块处理完成后,还需要等待第二个磁盘块的读入,所以这段时间用时为T2。如果T<C(即T2<C1),第二个磁盘读入后,还需要第一个磁盘处理完成以后再传送到用户工作区,所以这段时间用时为C1。

如上图所示如果有三个磁盘块总时长为:
T+M+Max(C,T)+M+Max(C,T)+M+C = (3-1)(Max(C,T)+M)+M+T+C = 3(Max(C,T)+M)+Min(C,T)当有N个数据块时,总耗时为(Max(C,T)+M)*N+Min(C,T)
例:T耗时为10μs,M耗时为6μs,C耗时为2μs。处理3个磁盘块花费的时间为:(10+6)x3+2=50μs。
双缓冲区

-
双缓冲区方式,是先将第一个缓冲区填满,紧接着填满第二个缓冲区。不同于单缓冲区,双缓冲区将磁盘块读入缓冲区操作T和磁盘块送入用户区操作M可以并行执行。但是磁盘块送入用户区操作M和系统处理磁盘块操作C还是串行方式进行。
-
假设我们有4个磁盘块需要处理,根据T和(M+C)的耗时不同可以分为如下两种情况:
T > (M+C)

总耗时为:T+T+T+M+C = 3*T+M+C
T < (M+C)

总耗时为:T+M+C+M+C+M+C = 3*(M+C)+T
记综上所述,当有N个数据块时双缓冲区的总耗时为Max(T,M+C)*N+Min(T,M+C)

浙公网安备 33010602011771号