缓冲区 ( buffer )

我们经常会接触到一个名词,就是缓冲区
那么缓冲区究竟是什么呢
缓冲区有什么作用呢


缓冲区

 缓冲区(buffer),是内存空间的一部分
 也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的。
 缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

为什么要引入缓冲区

 当存在高速设备与低速设备不匹配时,势必会让高速设备花时间等待低速设备,此时我们可以在这两者之间设立一个缓冲区

 缓冲区的作用:

 ①可以解除两者的制约关系。
  数据可以直接送往缓冲区,高速设备不用再等待低速设备,提高了计算机的效率。
  例如:我们使用打印机打印文档,由于打印机的打印速度相对较慢,我们先把文档输出到打印机相应的缓冲区,打印机再自行逐步打印,这时我们的 CPU 就可以处理别的事情

 ②可以减少数据的读写次数
  如果每次数据只传输一点数据,就需要传送很多次,这样会浪费很多时间,因为开始读写与终止读写所需要的时间很长。如果将数据送往缓冲区,待缓冲区满后再进行传送可以大大减少读写次数,这样就可以节省很多时间
  例如:我们想将数据写入到磁盘中,不是立马将数据写到磁盘中,而是先输入缓冲区中,当缓冲区满了以后,再将数据写入到磁盘中,这样就可以减少磁盘的读写次数,不然磁盘负载过大。

 因此,缓冲区就是一块内存区,它用在输入输出设备(低速设备)和 CPU(高速设备) 之间,用来存储数据
 它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用 CPU,从而解放出 CPU,提高工作效率

缓冲区的类型

 缓冲区 分为三种类型:全缓冲、行缓冲和不带缓冲。

 ①全缓冲
 在这种情况下,当填满标准I/O缓存后才进行实际I/O操作
 全缓冲的典型代表:磁盘文件的读写

 ②行缓冲
 在这种情况下,当在输入和输出中遇到换行符时,执行真正的I/O操作
 这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作
 典型代表:键盘输入数据(如标准输出:stdout)

 ③不带缓冲
 这种情况下,不进行缓冲(这使得相关信息可以直接尽快地显示出来)
 典型代表:出错情况(标准错误:stderr)

缓冲区的刷新

 缓冲区刷新的意思,就是改变的意思
 例如像缓冲区溢出的时候,多余出来的数据会直接将之前的数据覆盖,这样缓冲区里的数据就发生了改变

 下列情况会引发缓冲区的刷新:
  缓冲区满时
  关闭文件时
 缓冲区满或关闭文件时都会刷新缓冲区,进行真正的I/O操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值