I/O缓冲

I/O缓冲

缓冲区可以用于缓和CPU与I/O设备之间速度不匹配的矛盾。可用于讨论缓冲方法的I/O设备有两种,一种是面向块的 (block-oriented)设备,另一种是面向流的 (stream-oriented)设备。

面向块的设备将数据保存在大小固定的块中。每次传输只传一块。比如磁盘等。

面向流的设备以字节流的方式输入输出数据。比如终端、打印机等。

常见的缓冲方法有:单缓冲、双缓冲、循环缓冲

I/O缓冲方案


单缓冲

在I/O设备和处理机之间设置一个缓冲区。当设备与处理机 (用户进程)交换数据时,先把数据写入操作系统的缓冲区。当缓冲区数据传输完毕时,再将数据转移到用户进程中。

在生活中,家里的垃圾桶就是一个常见的例子。我们不断的往垃圾桶里丢垃圾,直到垃圾桶满了,再去给它转移到小区的大垃圾箱。

将从I/O设备写入数据到缓冲区的时间计作T (Transmission),转移到用户进程计作M (Move),计算处理数据计作C (Computation)。初试状态为用户进程(工作区)为满的(绿色正方形代表数据),缓冲区为空的。如下图所示:

单缓冲方案

如果存在一个单缓冲区,那么执行时间为 max ⁡ [ C , T ] + M \max [C,T] + M max[C,T]+M .

如果不存在缓冲区,那么执行时间为 T + C T+C T+C.


双缓冲

操作系统给内存中的系统部分分配两个缓冲区。I/O设备先输入数据到一号缓冲区,一号缓冲区被装满了,才可以传输给二号缓冲区。

双缓冲方案


循环缓冲

如果进程需要爆发式地执行大量I/O操作,双缓冲也可能无法满足需要。在这种情况下,使用多于两个缓冲区来缓解不足。

循环缓冲方案


参考

  • [1] [《操作系统 精髓与设计原理》]
  • [2] [《王道 操作系统考研复习指导》]
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值