缓冲技术分类:
- 单缓冲
- 双缓冲
- 循环缓冲
- 缓冲池
一、单缓冲
单缓冲是操作系统提供的一种最简单的缓冲形式,当用户进程发出一个IO请求时,操作系统便在内存中为它分配一个缓冲区。由于只设置一个缓冲区,设备和处理器交换数据时,应该先把要交换的数据写入缓冲区,然后放入工作区,在工作区的数据由CPU处理加工。因此,设备与CPU对缓冲区的操作是串行的。
注意:CPU在工作区处理数据的时候,不允许往缓冲区继续往工作区写入数据,否则缓冲区新的数据会将工作区中未处理完的程序覆盖。
case1:数据从磁盘到缓冲区的时间B > CPU加工数据的时间C时
case2:数据从磁盘到缓冲区的时间B < CPU加工数据的时间C时
综上所述:单缓冲区处理每块数据用时为MAX(B,C)+M
二、双缓冲
case1: B > M+C
case2: B <= M+C
综上所述:单缓冲区处理每块数据用时为MAX(B,M+C)
三、循环缓冲
四、缓冲池
缓冲池的工作流程
- 当输入进程要输入数据时,就在空缓冲队列的队首摘下一个空缓冲区作为收容输入数据的工作缓冲区,将它装满后挂到输入队列的队尾。
- 当计算进程要提取输入数据时,就将输入队列的队首缓冲区作为提取输入数据的工作缓冲区,将数据提取完毕后,把空缓冲区挂到空缓冲区队列的队尾。
- 当计算进程要输出数据时,就从空缓冲队列的队首摘下一个空缓冲区作为收容输出数据的工作缓冲区,将它装满后挂到输出队列的队尾。
- 当输出进程要提取输出数据时,就就将输出队列的队首缓冲区作为提取输出数据的工作缓冲区,将数据提取完毕后,把空缓冲区挂到空缓冲区队列的队尾。