cache除了“缓存”还有一个名字叫“快取”

cache和buffer被分别翻译成缓冲缓存,这两个概念确实比较难分清楚,很多情况下都被混用了,但确实,他们是两个不同的东西。
找了点小资料来

  buffer 与cache 的区别

  A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use.

  更详细的解释参考:Difference Between Buffer and Cache

  对于共享内存(Shared memory),主要用于在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存,笔者也没有去验证共享内存对上面等式的影响。如果你有兴趣,请参考:What is Shared Memory?

  cache 和 buffer的区别:

  Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。

  Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。

  Free中的buffer和cache:(它们都是占用内存):

  buffer : 作为buffer cache的内存,是块设备的读写缓冲区

  cache: 作为page cache的内存, 文件系统的cache

  如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非常小。

简单的说
cache, 是用来加速读取的一种方法。目的是加速读取。物理上,有cpu管理的L1 cache, L2 cache (both data cache and instruction cache), 和memory里的cache (如os管理的文件系统cache).

对于cache的访问, 分为cache hit or cache miss. 通常cache越大, cache命中率就越高,访问速度越快。访问者不知道数据一定在cache中。

Buffer, 只指memory的区域, 软件用来保存特定的信息。buffer按需分配,足够保存数据就行了,不求最大。软件有合适的机制,知道数据在buffer里。

另外还有一个很有意思的关于翻译的事情。台湾那边把cache翻译成“快取”,这个翻译显然比“缓存”来的形象生动而且音近。话说,在很久以前我看到这个词的时候还按拼音读成ca che(擦车)了呢= =!

关于cache这个话题是一次才twitter看到几位大牛在那讨论的,一下是原推
RT @isaac:RT @virushuo: 台湾“快取”这词翻译的非常好,我很喜欢 RT @delphij: RT: @quakelee: 推桌pro里面的clear cache翻译为“清除快取”,貌似这是国军的译法。显然快取比缓存要形象

One thought to “cache除了“缓存”还有一个名字叫“快取””

发表评论

电子邮件地址不会被公开。 必填项已用*标注