目录
一、什么是缓冲区?
缓冲区本质就是一个存储区域
一般由硬件寄存器组成,可以用内存实现
用硬件比较贵,且容量小,一般用在CPU等对速度有要求的地方
因此,一般都使用内存作为缓冲区
二、缓冲区有什么用?
(1)平衡CPU和外部设备的速度不匹配矛盾
(2)减少CPU中断频率(积累到一定数据量再中断)
(3)解决数据大小不匹配的问题(一边一次只能传一个字节,一边可以一个数据块)
(4)提高CPU和外部设备的并行性
三、缓冲区管理策略
1、单缓冲
在主存中为进程分配一个缓冲区(无特殊声明,一个缓冲区大小就是一个块)
数据的传输一共分三个阶段:
例如从外部设备到进程:
(1)从外部设备输入到缓冲区
(2)从缓冲区到进程工作区
(3)CPU干预,进行数据处理
一般会在这里考察计算题:计算处理一块数据的平均用时
方法:先设置初始状态,处理时间就是到达下一个初始状态的时
一般的题目会给出输入到缓存时间C、传输到工作区时间M、工作时间等关系C
根据具体的关系进行推演运算即可。

2、双缓冲
系统为进程和设备提供两个缓冲区
如何计算双缓冲中,处理一个数据块的平均时间?
同样,假设初始状态,计算到达下一个初始状态的时间
如果初始状态为:工作区空,其中一个缓冲区满,另一个缓冲区空
平均耗时为:Max(T,C+M)
T为设备输入时间,M为输入进程工作区时间,C为处理时间
四、单缓冲与双缓冲的区别
对于缓冲区:
只有在空的时候,才可输入数据
只有在满的时候,才可以取数据
(1)单缓冲
由于缓冲区只有空才输入,满才输出的特性
当两个机器都同时使用单缓冲区时,数据传输只能单向传输

(2)双缓冲
双方可以同时进行双向传输

五、循环缓冲区
用一个循环链表进行组织
有两个指针
in指针指向下一个空缓冲区
out指针指向下一个满的缓冲区
六、缓冲池
由一系列缓冲区组成
数据总共有三种状态:输入的数据,输出的数据,没有数据
于是,对应的有三种队列来组织不同的数据缓冲区:
输出队列:装满要输出数据的缓冲队列
输入队列:装满要输入数据的缓冲队列
空缓冲队列:不装数据
对于缓冲池,有四个缓冲区
根据不同的数据操作,对应不同的功能
如图所示:

一边为进程,一边为主存
进程对数据的操作有四种:
一、要求输出数据到缓冲区
(1)从空队列取一个空缓冲区
(2)数据填满空缓冲区后,将该缓冲区放到输出队列尾巴
二、要求得到一个输入数据
(1)直接取出输入队列的对头
(2)放入进程工作区执行
(3)用完放回空缓冲区
三、要求输入数据
(1)取出空缓冲队列对头
(2)填满输入数据
(3)放到输入队列的尾部
四、要输出数据到设备
(1)直接取出输出队列的对头作为输出
(2)将该缓冲块输出
(3)输出完放回空缓冲区
一般的就是上述四种过程
总结起来就是:具体情况具体分析
2万+

被折叠的 条评论
为什么被折叠?



