是说缓存是一种特殊的缓冲区吗?它们都执行类似的功能,但是我缺少一些潜在的差异吗?
是说缓存是一种特殊的缓冲区吗?它们都执行类似的功能,但是我缺少一些潜在的差异吗?
Answers:
来自维基百科关于数据缓冲的文章:
缓冲区是物理内存存储区域,用于在数据从一个位置移动到另一个位置时临时保存数据
甲缓冲器结束通过循环和容纳从一个存储位置传送到另一数据的每个单件(例如使用在音频处理循环缓冲器时)。缓冲区只允许 - 数据流中当前位置之前和之后的数据“缓冲区”。
实际上,缓冲区和缓存有一些共同的方面。然而,高速缓存在传统意义上通常不会没有当它被从一个地方移动到另一个地方(即CPU高速缓存)存储的所有数据。
缓存的目的是以透明的方式存储数据,以便缓存足够的数据,以便可以传输剩余的数据而不会有任何性能损失。在此上下文中,缓存仅“预取”少量数据(取决于传输速率,缓存大小等...)。
主要区别在于缓冲区最终会保存所有数据。相反,缓存可能包含全部,部分或全部数据(取决于设计)。但是,访问缓存就好像您首先直接访问数据一样 - 缓存的确切内容对缓存的“用户”是透明的。
不同之处在于界面。当您使用缓存访问数据源时,您使用它就像缓存是数据源一样 - 您可以通过缓存访问数据源的每个部分,缓存将确定数据来自何处(缓存本身或源代码)。缓存本身确定要预加载的数据的哪些部分(通常只是开头,但有时是全部),而使用中的缓存替换算法确定从缓存中删除内容的时间/时间。最好的例子是除了CPU缓存本身之外的系统是prefetcher / readahead。两者都将他们认为您将最常用的数据部分加载到内存中,如果没有缓存某些内容,则还原到硬盘驱动器。
相反,缓冲区不能用于在数据流中即时移动您的位置,除非新部件已经移动到缓冲区。为此,需要缓冲区重新定位(假设新位置超出缓冲区长度),实际上需要您从新位置“重新启动”缓冲区。最好的例子是在Youtube视频中移动滑块。
缓冲区的另一个好例子是在Winamp中播放音频。由于音频文件需要由CPU解码,因此从读入歌曲到处理音频到将声音发送到声卡之间需要一些时间。Winamp将缓冲一些音频数据,因此已经处理了足够的音频数据以避免任何“锁定”(即CPU总是准备你将在几百毫秒内听到的音频,它永远不会是实时的;你听到的是来自缓冲区,这是CPU过去准备的)。
缓存和缓冲区之间的一个重要区别是:
缓冲区是主存储器的一部分。它们是存在并从主存储器(RAM)访问的结构。
另一方面,缓存是计算机内存层次结构中的单独物理内存。
缓冲区有时也称为 - 缓冲区缓存。这个名称强调缓冲区的使用类似于缓存,即存储数据。而差异在于其使用的背景。
缓冲区用于临时存储数据,而数据则从一个对象移动到另一个对象。EX:当视频从Internet移动到我们的PC上时,显示缓冲区用于存储下一个显示的视频帧。(这会增加QoS,因为视频在成功的缓冲过程之后会顺利运行。)EX:另一个例子是我们将数据写入文件时的情况。新写入的数据不会立即复制到辅助存储器。所做的更改存储在缓冲区中,然后根据设计的策略,更改将反映回辅助存储器(硬盘)中的文件。
另一方面,在主存储器和处理器之间使用高速缓存,以弥合RAM和处理器的执行速度之间的差距。此外,最常访问的数据存储在缓存中以减少对RAM的访问。
常见的事情:两者都是计算和“主”存储之间的中间数据存储组件(软件或硬件)。
对我来说,区别在于:
缓冲:
缓存: