缓冲区管理

什么是缓冲区,有什么作用

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可以利用内存作为缓冲区

使用硬件缓冲区的成本高,容量小,一般仅用在对速度要求非常高的场合

缓冲区的作用

缓和CPU与io设备之间的速度不匹配的矛盾
减少对cpu的中断频率,放宽对cpu中断相应时间的限制
解决数据粒度不匹配的问题
提高cpu与io设备之间的并行性

单缓冲

假设用户进程要请求某种块设备读如若干块的数据,若采用单缓冲策略,操作系统会在主存中为妻分配一个缓冲区

当缓冲区数据非空时,不能忘缓冲区冲入数据,只能从缓冲区吧数据传出;当缓冲区为空时,可以我那个缓冲区冲入数据,单必须吧缓冲区充满后才能从缓冲区传出数据

常考题型: 计算每处理一块数据平均需要多久?

技巧:假定一个初始状态,分析下次到达相同状态需要多少时间,这就是处理一块数据平均所需时间

在单缓冲题型中,可以假设初始状态为工作区满,缓冲区空

输入时间T大于处理时间C的情况

平均用时=T+M

image-20251009114404003

![image-20251009113624095](/Users/tusier/Library/Application Support/typora-user-images/image-20251009113624095.png)

处理时间C大于输入时间T的情况:

平均用时=C+M

image-20251009114250567

![image-20251009113807005](/Users/tusier/Library/Application Support/typora-user-images/image-20251009113807005.png)

双缓冲

假设某用户进程请求某种块设备读入若干块的数据,若采用双缓冲的策略,操作系统会在主存中为妻分配两个缓冲区(如果题目没有特别说明,一个缓冲区的大小就是一个块)

双缓冲题目中,假设初始状态:工作区空,其中一个缓冲区满,另一个缓冲区空

当输入时间T大于传送时间M+处理时间C

处理一块数据平均用时:T

image-20251009113807005

![image-20251009114250567](/Users/tusier/Library/Application Support/typora-user-images/image-20251009114250567.png)

当输入时间T小于传送时间M+处理时间C

很难找到与初始状态完全一样的情况,但是

平均用时:M+C

image-20251009113624095

![image-20251009114404003](/Users/tusier/Library/Application Support/typora-user-images/image-20251009114404003.png)

采用双缓冲策略,处理一个数据块的平均耗时为Max(T,C+M)

使用单双缓冲在通信时的区别

两个互相通信的机器只设置单缓冲区,在任意一个时刻只能实现数据的单向传输

若两个相互通信的机器设置双缓冲区,则同一时刻可以实现双向的数据传输

循环缓冲区

将多个大小相等的缓冲区连接成一个循环队列

缓冲池

缓冲池由系统中共用的缓冲区组成,这些缓冲区按照使用状况可以分为:空缓存队列,装满输入数据的缓冲队列,装满输出数据的缓冲队列

另外,根据一个缓冲区在实际运算中扮演的功能不同,又设置了四种工作缓冲区:

1用于收容输入数据的工作缓冲区(hin)

2.用于提取输入数据的工作缓冲区(sin)

3.用于收容输出数据的工作缓冲区(hout)

4.用于提取输出数据的工作缓冲区(sout)


1输入进程请求输入数据

2.计算进程想要取得一块输入数据

3计算进程想要准备好的数据冲入缓冲区

4.输出进程请求输出数据

posted @ 2025-10-09 15:15  是我,米老鼠  阅读(3)  评论(0)    收藏  举报