当前位置:   article > 正文

操作系统缓冲区管理(单缓冲,双缓冲,循环缓冲,缓冲池)

操作系统缓冲区管理(单缓冲,双缓冲,循环缓冲,缓冲池)

1.什么是缓冲区

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。
使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合(如存储器管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)
一般情况下,更多的是利用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理
好这些缓冲区。

1.有什么作用

①缓和CPU与I/O设备之间速度不匹配的矛盾
②减少对CPU的中断频率,放宽对CPU中断相应时间的限制
③解决数据粒度不匹配的问题
如:输出进程每次可以生成一块数据,但I/O设备每次只能输出一个字符
④提高CPU与I/O设备之间的并行性

2.单缓冲

假设某用户进程请求某种块设备读入若干块的数据。
若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)。
注意:当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;
缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。

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

技巧:假定一个初始状态,分析下次到达相同状态需要多少时间,这就是处理一块数据平均所需时间。
在“单缓冲”题型中,可以假设初始状态为工作区满,缓冲区空

1.假设输入时间T大于处理时间C

处理一块数据的平均用时=T+M。(M为传送时间)
在这里插入图片描述

2.假设输入时间T小于处理时间C

处理一块数据的平均用时=C+M。
在这里插入图片描述

结论:
采用单缓冲策略,处理一块数据平均耗时Max(C,T)+M

2.单缓冲通信

两台机器之间通信时,可以配置缓冲区用于数据的发送和接受。
在这里插入图片描述
显然,若两个相互通信的机器只设置单缓冲区,在任一时刻只能实现数据的单向传输

3.双缓冲

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

1.计算数据处理的时间

1. 假设T>C+M

处理一块数据的平均用时=T.
在这里插入图片描述

2.假设T<C+M

在这里插入图片描述
总之,T<C+M意味着设备输入数据块的速度要比处理机处理数据块的速度更快。
每处理一个数据块平均耗时C+M

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

2.双缓冲通信

在这里插入图片描述
若两个相互通信的机器设置双缓冲区,则同一时刻可以实现双向的数据传输

4.循环缓冲

将多个大小相等的缓冲区链接成一个循环队列
注:以下图示中,橙色表示已充满数据的缓冲区,绿色表示空缓冲区。

在这里插入图片描述

5.缓冲池

1.共用缓冲区

缓冲池由系统中共用的缓冲区组成。
这些缓冲区按使用状况可以分为:空缓冲队列、装满输入数据的缓冲队列(输入队列)、装满输出数据的缓冲队列(输出队列)。
在这里插入图片描述

2.工作缓冲区

另外,根据一个缓冲区在实际运算中扮演的功能不同,
又设置了四种工作缓冲区:用于收容输入数据的工作缓冲区(hin)、用于提取输入数据的工作缓冲区(sin)、用于收容输出数据的工作缓冲区(hout)、用于提取输出数据的工作缓冲区(sout)

在这里插入图片描述

3.数据输入输出操作

①输入进程请求输入数据
从空缓冲队列中取出一块作为收容输入数据的工作缓冲区(hin)。
冲满数据后将缓冲区挂到输入队列队尾。
②计算进程想要取得一块输入数据
从输入队列中取得一块冲满输入数据的缓冲区作为“提取输入数据的工作缓冲区(sin)”。
缓冲区读空后挂到空缓冲区队列。
③计算进程想要将准备好的数据冲入缓冲区
从空缓冲队列中取出一块作为“收容输出数据的工作缓冲区(hout) ”。数据冲满后将缓冲区挂到输出队列队尾。
④输出进程请求输出数据
从输出队列中取得一块冲满输出数据的缓冲区作为“提取输出数据的工作缓冲区(sout) ”。
缓冲区读空后挂到空缓冲区队列。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/575675
推荐阅读
相关标签
  

闽ICP备14008679号