缓存和缓冲区有什么区别?

缓存和缓冲区有什么区别?

说缓存是一种特殊的缓冲区对吗?它们都执行类似的功能,但是我是否忽略了一些根本的区别?

答案1

摘自维基百科的文章数据缓冲区

缓冲区是物理内存存储的一个区域,用于在数据从一个地方移动到另一个地方时临时保存数据

A缓冲最终循环并保存从一个存储位置传输到另一个存储位置的每一块数据(例如在音频处理中使用循环缓冲区时)。缓冲区就是这样做的 - 数据流中当前位置之前和之后的数据“缓冲区”。

确实,缓冲区和缓存有一些共同之处。然而,传统意义上的缓存通常不是当数据从一个地方移动到另一个地方(即 CPU 缓存)时,存储所有数据。

的目的是缓存是以透明的方式存储数据,这样缓存的数据就足够了,以便可以传输剩余的数据而不会造成任何性能损失。在这种情况下,缓存仅“预取”少量数据(取决于传输速率、缓存大小等)。

主要区别在于缓冲区最终会保存所有数据。相反,缓存可能保存所有数据、部分数据或不保存任何数据(取决于设计)。但是,访问缓存就像您直接访问数据一样 - 缓存的具体内容对缓存的“用户”来说是透明的。


不同之处在于界面。当您使用缓存访问数据源时,您将其用作缓存数据源 - 您可以通过缓存访问数据源的每个部分,缓存将确定数据来自何处(缓存本身或源)。缓存本身决定要预加载数据的哪些部分(通常只是开头,但有时是全部),而缓存替换算法正在使用中决定了从缓存中删除什么/何时删除。最好的例子是系统,除了CPU缓存本身就是预取器/预读. 两者都将他们认为您最常使用的数据部分加载到内存中,如果没有缓存,则恢复到硬盘驱动器。

相反,除非新部分已移动到缓冲区,否则缓冲区不能用于立即移动数据流中的位置。这样做需要重新定位缓冲区(假设新位置超出缓冲区长度),实际上需要您从新位置“重新启动”缓冲区。最好的例子是在 Youtube 视频中移动滑块。

缓冲区的另一个很好的例子是在 Winamp 中播放音频。由于音频文件需要由 CPU 解码,因此从歌曲读入到音频处理再到发送到声卡需要一些时间。Winamp 将缓冲部分音频数据,以便有足够的音频数据已经处理以避免任何“锁定”(即 CPU 始终在准备您将在几百毫秒内听到的音频,它永远不会是实时的;您听到的内容来自缓冲区,这是 CPU 过去准备的内容)。

答案2

更准确的说法是,缓存是缓冲区的一种特定使用模式,这意味着多次使用同一数据。大多数“缓冲区”的使用都意味着数据将在一次使用后被耗尽或丢弃(尽管不一定如此),而“缓存”则意味着数据将被多次重复使用。缓存还经常意味着数据在被使用时被存储,尽管不一定如此(如预取等),而缓冲则意味着数据被存储起来以供以后使用。

然而,在实施和使用上肯定存在很大的重叠。

答案3

缓存和缓冲区之间的一个重要区别是:

缓冲区是主存储器的一部分。它们是存在于主存储器 (RAM) 中并可从中访问的结构。

另一方面,缓存是计算机内存层次结构中单独的物理内存。

缓冲区有时也被称为 - 缓冲区缓存。这个名字强调了缓冲区的用途与缓存的用途相似,即存储数据。而不同之处在于其使用环境。

缓冲区用于在数据从一个对象移动到另一个对象时临时存储数据。例如:当视频从互联网移动到​​我们的 PC 上时,显示缓冲区用于存储接下来要显示的视频帧。(这提高了 QoS,因为视频将在成功缓冲过程后顺利运行。)例如:另一个例子是我们将数据写入文件的情况。新写入的数据不会立即复制到辅助存储器中。所做的更改存储在缓冲区中,然后根据设计的策略,更改将反映回辅助存储器(硬盘)中的文件。

另一方面,缓存用于主内存和处理器之间,以弥补 RAM 和处理器执行速度之间的差距。此外,最常访问的数据也存储在缓存中,以减少对 RAM 的访问。

答案4

共同点:两者都是计算和“主”存储之间的中间数据存储组件(软件或硬件)。

对我来说,区别如下:

缓冲:

  • 手柄顺序的访问数据(例如从文件或套接字读取/写入数据)
  • 启用计算和主存储器之间的接口,适应数据生产者和数据消费者之间的数据传输模式不同。例如,计算写入小块数据,但磁盘驱动器只能接受特定大小的数据块。因此,缓冲区会积累小块数据作为输入,并将它们重新组合成更大的输出块。
  • 所以这就像适配器设计模式。它将两个不能直接互操作的交互组件连接起来。
  • 例如:磁盘缓冲区、Java语言中的BufferedReader、计算机图形学中的Duffering。

缓存:

  • 手柄随机的访问数据(例如,CPU 缓存按不必要的顺序缓存内存行)。
  • 优化访问主存储器,使其更快。例如,CPU 缓存避免访问内存,从而使 CPU 命令更快。
  • 这就像一个装饰者设计模式。它将两个原则上可以直接交互的交互组件(通常透明地)连接起来,但它使交互更快。
  • 示例:CPU 缓存、页面缓存、Web 代理、浏览器缓存。

相关内容