我到处都看到"BUFFER"这个词,但我无法理解它到底是什么.
有人请说明外行人的语言缓冲是什么?
什么时候使用?
怎么用?
Perchik.. 238
想象一下,你正在从碗里吃糖果.你经常拿一件.为了防止碗用完,有人可能会在碗变空之前重新装满碗,这样当你想要另一块时,碗里就会有糖果.
碗在你和糖果袋之间起缓冲作用.
如果你正在网上观看电影,网络服务将在接下来的5分钟左右不断下载到缓冲区中,这样你的计算机就不必在观看时下载电影(这会导致挂起).
想象一下,你正在从碗里吃糖果.你经常拿一件.为了防止碗用完,有人可能会在碗变空之前重新装满碗,这样当你想要另一块时,碗里就会有糖果.
碗在你和糖果袋之间起缓冲作用.
如果你正在网上观看电影,网络服务将在接下来的5分钟左右不断下载到缓冲区中,这样你的计算机就不必在观看时下载电影(这会导致挂起).
术语"缓冲区"是一个非常通用的术语,并不是特定于IT或CS.这是一个临时存储的地方,以减轻输入速度和输出速度之间的差异.虽然生产者比消费者更快,但生产者可以继续将输出存储在缓冲区中.当消费者加速时,它可以从缓冲区读取.缓冲区位于中间以弥补差距.
如果您在http://en.wiktionary.org/wiki/buffer上平均定义,我想您会明白这一点.
为了证明我们真的"每天必须步行10英里才能上雪去学校",请参阅TOPS-10 Monitor Calls Manual第1卷,第11.9节"使用缓冲I/O",位于书签11-24.如果你受到噩梦,请不要阅读.
缓冲区只是用于保存数据的一块内存.在最普遍的意义上,它通常是一个内存块,在一次操作中加载,然后在一个或多个Perchik的"糖果碗"示例中清空.例如,在C程序中,您可能具有:
#define BUFSIZE 1024 char buffer[BUFSIZE]; size_t len = ; // ... later while((len=read(STDIN, &buffer, BUFSIZE)) > 0) write(STDOUT, buffer, len);
...这是cp(1)的最小版本.这里,缓冲区数组用于存储read(2)读取的数据,直到写入为止; 然后重新使用缓冲区.
使用了更复杂的缓冲方案,例如循环缓冲区,其中使用了一些有限数量的缓冲区,一个接着一个; 一旦缓冲区全部填满,索引"回绕",以便重新使用第一个缓冲区.
缓冲区意味着"临时存储".缓冲区在计算中很重要,因为互连的设备和系统很少彼此"同步",因此当信息从一个系统发送到另一个系统时,它可以等到接收方系统准备就绪.
实际上它取决于每种情况下的上下文,因为没有一个定义 - 但是通常说缓冲区是暂时保留某些东西的地方.我能想到的最好的现实世界比喻将是一个等待区.计算中的一个简单示例是缓冲区是指用于临时存储数据的RAM的一部分.