缓冲管理

----- 为了缓和CPU与I/O设备之间速度不匹配的矛盾,提高CPU和I/O设备的并行性,在现代操作系统中,几乎所有的I/O设备在与处理机交换数据时都用了缓冲区。缓冲管理的主要职责是组织好这些缓冲区,并提供获得和释放缓冲区的手段。

1、缓冲的引入

---- 在设备管理中,引入缓冲区的主要原因可归结为以下几点:

-- 1)缓和CPU与I/O设备间速度不匹配的矛盾。

事实上,凡在数据到达速率与其离去速率不同的地方,都可设置缓冲区,以缓和它们之间速率不匹配的矛盾。

CPU的运算速度远远高于I/O设备的速率,如果没有缓冲区,则在输出数据时,必然会由于打印机的速度跟不上CPU的速度而使CPU停下来等待;然而在计算阶段,打印机又空闲无事。如果在打印机或控制器中设置一缓冲区,用于快速暂存程序的输出数据,以后由打印机“慢慢地”从中取出数据打印,这样就可提高CPU的工作效率。类似地,在输入设备与CPU之间也设置缓冲区,也可使CPU的工作效率得以提高。

-- 2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制。

-- 3)提高CPU与I/O设备之间的并行性

缓冲的引入可显著地提高CPU与I/O设备间的并行操作程度,提高系统的吞吐量设备的利用率

例如,在CPU和打印机之间设置了缓冲区后,便可使CPU与打印机并行工作。

2、单缓冲和双缓冲

-- 1)单缓冲(Single Buffer)

在单缓冲情况下,每当用户进程发出一I/O请求时,操作系统便在主存中为之分配一缓冲区(图a)。

-- 在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间为T,操作系统将该缓冲区中的数据传送到用户区的时间为M,CPU对这一块数据处理(计算)的时间为C。T和C是可以并行的。(图b)(缓冲区存满之后才能取?互斥访问)


当T>C时,系统对每一块数据的处理时间为M+T,反之则为M+C,故可把系统对每一块数据的处理时间表示为Max(C,T)+M.

-- 在字符设备输入时,缓冲区用于暂存用户输入的一行数据,在输入期间,用户进程被挂起以等待数据输入完毕;在输出时,用户进程将一行数据输入到缓冲区后,继续进行处理。当用户进程已有第二行数据输出时,如果第一行数据尚未被提取完毕,则此时用户进程应阻塞。

-- 2)双缓冲(Double Buffer)

为了加快输入和输出速度,提高设备利用率,人们又引入了双缓冲区机制,也称为缓冲对换(Buffer Swapping)。

在设备输入时,先将数据送入第一缓冲区,装满后便转向第二缓冲区。此时操作系统可以从第一缓冲区中移出数据,并送入用户进程。

       

接着由CPU对数据进行计算。在双缓冲时,系统处理一块数据的时间可以粗略的认为是Max(C,T)如果C<T,可使块设备连续输入;如果C>T,则可使CPU不必等待设备输入。对于字符设备,若采用行输入方式,则采用双缓冲通常能消除用户的等待时间,即用户在输入完第一行之后,在CPU执行第一行中的命令时,用户可继续向第二缓冲区输入下一行数据。

例题:某文件占10个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析。假设一个缓冲区与一个磁盘块大小相同,把一个磁盘块读入缓冲区的时间为100us,将缓冲区的数据传送到用户区的时间是50us,CPU对一块数据进行分析的时间为50us。在单缓冲区和双缓冲区结构下,读入并分析完该文件的时间分别是1550us1100us

单缓冲:(100+50)×10=1500us,记得最后一个磁盘块的处理时间还有50us,所以总共是1550us。

双缓冲:100×10=1000us,加上将最后一个缓冲区的数据传输到用户区并由CPU处理完的时间50+50=100us,总共是1100us。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值