什么是缓冲区,有什么作用
缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可以利用内存作为缓冲区
使用硬件缓冲区的成本高,容量小,一般仅用在对速度要求非常高的场合
缓冲区的作用
缓和CPU与io设备之间的速度不匹配的矛盾
减少对cpu的中断频率,放宽对cpu中断相应时间的限制
解决数据粒度不匹配的问题
提高cpu与io设备之间的并行性
单缓冲
假设用户进程要请求某种块设备读如若干块的数据,若采用单缓冲策略,操作系统会在主存中为妻分配一个缓冲区
当缓冲区数据非空时,不能忘缓冲区冲入数据,只能从缓冲区吧数据传出;当缓冲区为空时,可以我那个缓冲区冲入数据,单必须吧缓冲区充满后才能从缓冲区传出数据
常考题型: 计算每处理一块数据平均需要多久?
技巧:假定一个初始状态,分析下次到达相同状态需要多少时间,这就是处理一块数据平均所需时间
在单缓冲题型中,可以假设初始状态为工作区满,缓冲区空
输入时间T大于处理时间C的情况:
平均用时=T+M

处理时间C大于输入时间T的情况:
平均用时=C+M

双缓冲
假设某用户进程请求某种块设备读入若干块的数据,若采用双缓冲的策略,操作系统会在主存中为妻分配两个缓冲区(如果题目没有特别说明,一个缓冲区的大小就是一个块)
双缓冲题目中,假设初始状态:工作区空,其中一个缓冲区满,另一个缓冲区空
当输入时间T大于传送时间M+处理时间C
处理一块数据平均用时:T

当输入时间T小于传送时间M+处理时间C
很难找到与初始状态完全一样的情况,但是
平均用时:M+C

采用双缓冲策略,处理一个数据块的平均耗时为Max(T,C+M)
使用单双缓冲在通信时的区别
两个互相通信的机器只设置单缓冲区,在任意一个时刻只能实现数据的单向传输
若两个相互通信的机器设置双缓冲区,则同一时刻可以实现双向的数据传输
循环缓冲区
将多个大小相等的缓冲区连接成一个循环队列
缓冲池
缓冲池由系统中共用的缓冲区组成,这些缓冲区按照使用状况可以分为:空缓存队列,装满输入数据的缓冲队列,装满输出数据的缓冲队列
另外,根据一个缓冲区在实际运算中扮演的功能不同,又设置了四种工作缓冲区:
1用于收容输入数据的工作缓冲区(hin)
2.用于提取输入数据的工作缓冲区(sin)
3.用于收容输出数据的工作缓冲区(hout)
4.用于提取输出数据的工作缓冲区(sout)
1输入进程请求输入数据
2.计算进程想要取得一块输入数据
3计算进程想要准备好的数据冲入缓冲区
4.输出进程请求输出数据