缓冲管理

为了缓和CPU与I/O设备速度不匹配的矛盾,提高它们之间的并行性,在现代计算机系统中,几乎所有的I/O设备在与CPU交换数据时,都用了缓冲区。缓冲管理的主要职责是组织好这些缓冲区,并向进程提供获得和释放缓冲区的手段。

缓冲机制的作用:1)缓和CPU和I/O设备间速度不匹配的矛盾 2)减少对CPU 的中断频率 3)提高CPU和I/O设备的并行性

可以通过下面这个例子分析缓冲区对CPU中断频率和响应时间的影响。

例子:在一个远程通信系统中,在本地接收从远程终端发来的数据,速率为100kb/s。

1)对于一位缓冲

CPU中断频率为100kb/1b=100k,CPU响应时间为10us。

2)对于一个8缓冲区

设备可以等到8位缓冲区填充完后再向CPU发出中断,所以CPU中断频率为100kb/8b=12.5k

当缓冲区填满时,不能再接受下一位的输入,所以CPU的响应时间必须是1b/100kb=10us。

3)对于两个8位缓冲区

设备可以等到1号8位缓冲区填充完后再向CPU发出中断,所以CPU中断频率为100kb/8b=12.5k

当1号8位缓冲区填满时,可以将本区内容传递至2号缓冲区进行送内存操作,而1号缓冲区继续接受下8位数据,所以CPU的响应时间必须是8b/100kb=80us。

缓冲的实现机制:

按照系统中设置的缓冲区个数及对缓冲区的组织方式,缓冲区的实现机制分为单缓冲、双缓冲、循环缓冲、缓冲池机制。

1)单缓冲

在块设备输入数据的过程中,首先把磁盘数据送到缓冲区,花费的时间为Ts,(简记为Ts过程)

                                                   然后把操作系统缓冲区的数据送到用户区,花费的时间为Tm,(简记为Tm过程)

                                                   最后用户进程对这批数据进行计算,花费的时间为Tc。(简记为Tc过程)

当Tc过程与Tm过程操作同一块缓冲区时,这两个操作不能并行(读写锁),Ts过程和Tm一直都不能并行

单缓冲的情况如下:

当Ts>Tc,(上图)主要是Tm与Ts不能并行,因此总时间T=(n*(Ts+Tm)+Tc)/n=Ts+Tm

当Ts<Tc,(上图)主要是Tm与Tc不能并行,因此总时间T=(n*(Tc+Tm)+Ts)/n=Tc+Tm

综上,单缓冲下总时间T=max(Ts+Tc)+Tm

2)

双缓冲条件下,Ts过程与Tm过程可以并行,Tm过程与Tc过程不能并行

当Ts>Tc时,(上图)由于Tm<<Tc且Tm<<Ts,所以T=(n*Ts+Tm+Tc)/n=Ts=max(Tc,Ts)

当Ts<Tc时,Tm与Tc不能并行,T=(n*(Tm+Tc)+Ts)/n=Tm+Tc=max(Tc,Ts)+Tm,但Ts<Tc这种情况非常少,所以一般做题时填双缓冲的时间都填Ts>Tc情况下的max(Tc,Ts)

综上,双缓冲时间为max(Tc,Ts)
3)循环缓冲

相比双缓冲区,增加了缓冲区的数量。对于多缓冲区,将它们组织成循环缓冲的形式。

4)缓冲池

为了提高缓冲区的利用率,目前广泛采用公用缓冲池机制。在缓冲池中设置多个缓冲区,可供若干个进程共享。

参考博客:https://blog.csdn.net/a649339266/article/details/77836813

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章