缓冲区的基础知识

  

缓冲区(buffer)这个中文译意源自当计算机的高速部件与低速部件通讯时,必须将高速部件的输出暂存到某处,以保证高速部件与低速部件相吻合. 后来这个意思被扩展了,成为"临时存贮区"的意思。

一般缓冲区用于跟外设接口,比如输入的键盘、输出到屏幕、输出到文件、串并口、网络等等,主要原因是CPU工作速度和总线传送速度远远快于这些外设的处理速度,

为了不让CPU处于长时间等待状态,通常采用中断方式来处理,但为了提高效率,减少中断的次数,cpu一次把能处理的一批数据传送给外设,然而外设又不能同步处理这些数据,这样就产生了缓冲区,cpu把数据送到缓冲区,外设到缓冲区取数据进行处理,用这种方式来保持cpu跟外设之间的数据交换。

  正常情况下,cpu把数据送到缓冲区就认为要求的工作已经处理完了,至于缓冲区的数据什么时候真正被外设处理那是由系统和外设调度决定的,跟cpu处理肯定是不同步的。cpu可能已经处理到输出后好几条指令了,缓冲区里的数据还在处理。以缓冲方式打开一个文件时,往文件里写几个字节,一般不会立即真正把这几个字节写入文件,只有当缓冲区满时才真正写盘。如果想在缓冲区满之前写盘保存,可以做冲刷缓冲区动作。

  下列行为引发冲刷动作:

  1)缓冲区满时;
  2)行输出时遇endl;
  3)执行冲刷函数(fflush,

 但是C和C++的标准里从来没有定义过 fflush函数);
  4)关闭文件。
但要是你的程序里有强制刷新缓冲指令,那cpu就要等缓冲区里数据真正被外设处理完才执行下一条指令。

原文链接: https://www.cnblogs.com/aenspire/archive/2011/05/05/2038057.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    缓冲区的基础知识

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/25023

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午2:54
下一篇 2023年2月8日 上午2:54

相关推荐