缓冲区和缓存的区别?

17

能否详细说明 - 系统内存中的缓冲区(Buffer)和高速缓存(Cache)有什么区别?

4个回答

24

缓冲区(Buffer)是一个用于短时间存储数据的容器,当消费者无法即时处理来自源头的大量数据时,缓冲区会起到一个先进先出的作用。数据流入缓冲区,可能被暂时存储,并在一段时间后按照其初始顺序传递出去。

缓存(Cache)是一种用于加速特定操作的存储空间。物品被放置在缓存中并且需要多次重复使用。缓存没有“流过”的机制,数据不会按照相同的顺序进出缓存区,它只是一个容器。实际上,顺序可能是任何样子 - 通过键值寻址,而不是“流过”,但它们被“放置”并一直保留在那里(直到因为长时间未使用或系统关闭而被清除)。


但如果缓存是临时数据持有者,那么“缓存”和“已用”之间有什么区别呢?如果您使用“free -m”或“dstat -m”,这两个参数将被显示。 - fanchyna

5

缓冲区是一个现代化的数据集合,用于管理或拆分大量数据。这可能对需要大块信息的一组集合设备进行交互,或者当数据必须以与其生成方式不同的多种方式提供时,或者很少情况下当少量块不足时非常基本。即使缓冲数据一次性存储到缓冲区并从缓冲区获取,也具有优势。

高速缓存则认为数据将被多次从缓存中读取而不是写入它们。 其目的是减少对底层存储器的访问。 缓冲区是由操作系统在主存储器中管理的可编程缓存,用于从磁盘中获取最必要的数据,以便它们不必再次从内存中获取。该功能由操作系统提供。而高速缓存实际上是CPU使用的硬件,用于减少有效的内存访问时间。


0

维基百科添加一些关于缓冲区缓存之间区别的内容。

缓冲区是一个临时的内存位置,传统上用于CPU指令无法直接寻址外围设备中存储的数据。因此,可寻址内存被用作中间阶段。此外,当需要组装或拆卸大块数据(如存储设备所需)或者数据可能按不同顺序交付时,这样的缓冲区可能是可行的。通常整个数据缓冲区是按顺序传输的(例如到硬盘),因此缓冲本身有时会增加传输性能或减少传输延迟的变化或抖动,而不是像缓存一样旨在减少延迟。即使缓冲数据只写入一次并从缓冲区读取一次,这些好处也是存在的。
缓存也可以提高传输性能。部分性能提升同样来自于多个小传输将合并为一个大块。但主要的性能提升是因为有很大的机会从缓存中多次读取相同的数据,或者很快就会读取已写入的数据。缓存的唯一目的是减少对底层较慢存储器的访问。缓存通常也是一个抽象层,旨在从相邻层的角度看是不可见的。

-1

缓冲区就像一个鼓,它可以存储数据并将其刷新出来……另一方面,缓存用于使您的操作更快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接