赞
踩
缓冲区是一个存储区域,可以由专门的
硬件寄存器
组成,也可利用内存作为缓冲区。
使用硬件作为缓冲区的成本较高,容量也较小
,一般仅用在对速度要求非常高的场合(如存储器管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)
一般情况下,更多的是利用内存作为缓冲区
,“设备独立性软件”的缓冲区管理就是要组织管理
好这些缓冲区。
①缓和CPU与I/O设备之间速度不匹配的矛盾
②减少对CPU的中断频率,放宽对CPU中断相应时间的限制
③解决数据粒度不匹配的问题
如:输出进程每次可以生成一块数据,但I/O设备每次只能输出一个字符
④提高CPU与I/O设备之间的并行性
假设某用户进程请求某种块设备读入若干块的数据。
若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区
(若题目中没有特别说明,一个缓冲区的大小就是一个块)。
注意:当缓冲区数据非空
时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;
当缓冲区为空
时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。
技巧:假定一个初始状态,分析下次到达相同状态需要多少时间,这就是处理一块数据平均所需时间。
在“单缓冲”题型中,可以假设初始状态为工作区满,缓冲区空
。
处理一块数据的平均用时=T+M。(M为传送时间)
处理一块数据的平均用时=C+M。
结论:
采用单缓冲策略,处理一块数据平均耗时Max(C,T)+M
。
两台机器之间通信时,可以配置缓冲区用于数据的发送和接受。
显然,若两个相互通信的机器只设置单缓冲区,在任一时刻只能实现数据的单向传输
。
假设某用户进程请求某种块设备读入若干块的数据。
若采用双缓冲的策略,操作系统会在主存中为其分配两个缓冲区
(若题目中没有特别说明,一个缓冲区的大小就是一个块)
双缓冲题目中,假设初始状态为:工作区空,其中一个缓冲区满,另一个缓冲区空
处理一块数据的平均用时=T.
总之,T<C+M意味着设备输入数据块的速度要比处理机处理数据块的速度更快。
每处理一个数据块平均耗时C+M
结论::采用双缓冲策略,处理一个数据块的平均耗时为Max (T, C+M)
若两个相互通信的机器设置双缓冲区,则同一时刻可以实现双向的数据传输
。
将多个
大小相等
的缓冲区链接成一个循环队列
。
注:以下图示中,橙色表示已充满数据的缓冲区,绿色表示空缓冲区。
缓冲池
由系统中共用的缓冲区组成。
这些缓冲区按使用状况可以分为:空缓冲队列
、装满输入数据的缓冲队列(输入队列
)、装满输出数据的缓冲队列(输出队列
)。
另外,根据一个缓冲区在实际运算中扮演的功能不同,
又设置了四种工作缓冲区:用于收容输入数据
的工作缓冲区(hin)、用于提取输入
数据的工作缓冲区(sin)、用于收容输出
数据的工作缓冲区(hout)、用于提取输出
数据的工作缓冲区(sout)
①输入进程请求输入数据
从空缓冲队列中取出一块作为收容输入数据的工作缓冲区(hin)。
冲满数据后将缓冲区挂到输入队列队尾。
②计算进程想要取得一块输入数据
从输入队列中取得一块冲满输入数据的缓冲区作为“提取输入数据的工作缓冲区(sin)”。
缓冲区读空后挂到空缓冲区队列。
③计算进程想要将准备好的数据冲入缓冲区
从空缓冲队列中取出一块作为“收容输出数据的工作缓冲区(hout) ”。数据冲满后将缓冲区挂到输出队列队尾。
④输出进程请求输出数据
从输出队列中取得一块冲满输出数据的缓冲区作为“提取输出数据的工作缓冲区(sout) ”。
缓冲区读空后挂到空缓冲区队列。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。