缓冲管理

缓冲的引入
(1)缓和CPU与I/0设备间速度不匹配的矛盾。
(2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制。
(3)提高CPU和I/0设 备之间的并行性。
单缓冲和双缓冲
1.单缓冲
在单缓冲情况下,每当用户进程发出一个I/0请求时,OS便在主存中为之分配一个缓冲区。例如:在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间为T;将该缓冲区的数据传送到用户区的时间为M;CPU对这块数据的处理时间为C;由于T与C是可以并行的,可以把系统对每一-块数据的处理时间表示为max(C, T)+M.
在这里插入图片描述
2.双缓冲
引入双缓冲后,在设备输入时,先将数据送入第一个缓冲区,装满后便转向第2个缓冲区;这时,0S可从第一个缓冲区中移出数据,送入用户进程;由CPU对数据进行计算。例如:采用行输入方式时,双缓冲能
消除用户的等待时间,即用户在输入完成第1行之后,在CPU执行第1行的命令时,用户可继续输入第2行的数据。
在这里插入图片描述
在这里插入图片描述
循环缓冲
1.循环缓冲的组成
(1)缓冲区。缓冲区大小相同,分为三种类型:用于装入输入数据的空缓冲区R、已装满数据的缓冲区G、现行工作区C
(2)指针。用于指示计算进程下一个可用缓冲区G的指针nextg、指示输入进程下次可用的空缓冲区nexti、指示计算进程正在使用的缓冲区C的指针current
在这里插入图片描述
2.循环缓冲区的使用
(1) Getbuf过程。
计算进程要使用缓冲区数据时,将由指针nextg所指示的缓冲区,提
供给进程;将其改为现行工作区,令current 指针指向该缓冲区的第一个单元,同时,将nextg移向下一个G缓冲区。
(2) Releasebuf过程。
当计算进程把C缓冲区中的数据提取完毕时,调用Releasebuf过程,
释放C;将该缓冲区C改为空缓冲区R。
类似的,输入进程使用空缓冲区装入数据时,应调用Getbuf过程。当输入进程把缓冲区填满时,应调用Releasebuf过程。
3.进程同步
(1) Nexti指针追赶上.Nextg指针。
说明输入进程的速度大于计算进程的速度,全部空缓冲区装满数据。此时,输入进程阻塞,称为系统受计算所限。
(2) Nextg指针追 赶上.Nexti指针。
说明计算进程的速度大于输入进程的速度,全部数据缓冲区取空。此时,计算进程阻塞,称为系统受I0所限。
缓冲池
1.缓冲池的组成
公用缓冲池,含有以下三种类型的缓冲区:
(1) 空(闲)缓冲区;
(2)装满输入数据的缓冲区;
(3)装满输出数据的缓冲区。
将相同类型的缓冲区链成-一个队列,形成以下三个队列:
(1)空缓冲队列emq。
(2)输入队列inq。
(3)输出队列outq。
除了上述3个队列外,还具有4种工作缓冲区:
(1) 用于收容输入数据的工作缓冲区hin;
(2) 用于提取输入数据的工作缓冲区sin;
(3) 用于收容输出数据的工作缓冲区hout;
(4) 用于提取输出数据的工作缓冲区sout。

在这里插入图片描述
2.缓冲区工作方式
在这里插入图片描述
(1)收容输入。当输入进程需要输入数据时,调用Getbuf (emq) 过程,从空缓冲队列emq的队首,摘~ 下一个空缓冲区,作为收容输入工作缓冲区hin。把数据输入其中,装满后再调用putbuf (inq, hin) 过程,将该缓冲区挂在输入队列inq上。
在这里插入图片描述
(2)提取输入。当计算进程需要数据时,调用Getbuf (inq) 过程,从输入数据队列inq的队首,取得一一个缓冲区,作为提取输入工作缓冲区sin,计算进程从中取数据。计算进程用完数据后,再调用putbuf (emq, sin)过程,将该缓冲区挂在空队列emq上。
在这里插入图片描述
(3)收容输出。当计算进程需要输出数据时,调用Getbuf (emp)过程,从空缓冲队列emp的队首,摘下一个空缓冲区,作为收容输出工作缓冲区hout。把输出数据装满后,再调用putbuf (outq, hout) 过程,将该缓冲区挂在输出队列outq末尾。
在这里插入图片描述
(4)提取输出。输出进程Getbuf (outq) 过程,从输出队列outq的队首,取得一个装满输出数据的缓冲区,作为提取输出工作缓冲区sout。在数据提取完成后,再调用putbuf (emq, sout) 过程,将该缓冲区挂在空队列emq末尾。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值