一、cache
cache 高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。
由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。
cache又分为一级cache(L1 cache)和二级cache(L2 cache)和三级cache(L3 cache)。
其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
二、buffer
buffer 缓冲区,是一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域,主要为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度。
它是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。
举个例子:一个U盘,向里面拷贝3M文件,但U盘的灯没有跳动,过了一会儿(或者手动输sync)U盘的灯就跳动起来了。卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟。
简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
三、Linux中
如图中free命令结果所示,buffers代表的就是buffer,cached代表的就是cache.