Buffer、Cache有何区别,你懂的!

1、Buffer(缓冲区)是系统两端处理

速度平衡(从长时间尺度上看)时使用的。它的引入是为了减小短期内突发I/O的影响,起到流量整形的作用。比如生产者——消费者问题,他们产生和消耗资源的速度大体接近,加一个buffer可以抵消掉资源刚产生/消耗时的突然变化。

2、Cache(缓存)则是系统两端处理速度不匹配时的一种折衷策略。因为CPU和memory之间的速度差异越来越大,所以人们充分利用数据的局部性(locality)特征,通过使用存储系统分级(memory hierarchy)的策略来减小这种差异带来的影响。

3、假定以后存储器访问变得跟CPU做计算一样快,cache就可以消失,但是buffer依然存在。比如从网络上下载东西,瞬时速率可能会有较大变化,但从长期来看却是稳定的,这样就能通过引入一个buffer使得OS接收数据的速率更稳定,进一步减少对磁盘的伤害。

是这样的,其实Cache和Buffer,物理上讲都是RAM。逻辑上讲,你把Cache叫成Buffer,或者把Buffer叫成Cache,都没有错。

不过Buffer多用于编程方面,Cache多用于非编程方面的叫法。比如为某程序分配一段Buffer,而一般没有说为某程序分配一段Cache的,但是你可以说这个程序有Cache,或者说Cache是泛指,Buffer是特指。见仁见智。而对于磁盘阵列来讲,Buffer=Cache。

另外,从本质上讲,Buffer是“缓冲”,而Cache是“缓存”,即Buffer中的数据是一定要在短时间内被处理的,而Cache则可以作为一个数据的长期的容器而其中的数据不一定非要被立刻处理。

在linux系统中查询内存

$ free -m

total used free shared buffers cached

Mem: 992 749 242 0 131 251

-/+ buffers/cache: 366 626

Swap: 1023 50 973

Buffer、Cache有何区别,你懂的!


分享到:


相關文章: