OS(操作系统)相关 —— Cache和Buffer,主要区别是什么?

从网络提炼出的观点

Posted by HD on January 9, 2019

正文

Cache 和 Buffer,主要区别是什么?

火花

cache 是为了弥补高速设备和低速设备的鸿沟而引入的中间层,最终起到加快访问速度的作用。 而 buffer 的主要目的进行流量整形,把突发的大数量较小规模的 I/O 整理成平稳的小数量较大规模的 I/O,以减少响应次数(比如从网上下电影,你不能下一点点数据就写一下硬盘,而是积攒一定量的数据以后一整块一起写,不然硬盘都要被你玩坏了)。

=======================

以下观点属于程老大,无节操默写:

1、Buffer(缓冲区)是系统两端处理速度平衡(从长时间尺度上看)时使用的。它的引入是为了减小短期内突发I/O的影响,起到流量整形的作用。比如生产者——消费者问题,他们产生和消耗资源的速度大体接近,加一个buffer可以抵消掉资源刚产生/消耗时的突然变化。 2、Cache(缓存)则是系统两端处理速度不匹配时的一种折衷策略。因为CPU和memory之间的速度差异越来越大,所以人们充分利用数据的局部性(locality)特征,通过使用存储系统分级(memory hierarchy)的策略来减小这种差异带来的影响。 3、假定以后存储器访问变得跟CPU做计算一样快,cache就可以消失,但是buffer依然存在。比如从网络上下载东西,瞬时速率可能会有较大变化,但从长期来看却是稳定的,这样就能通过引入一个buffer使得OS接收数据的速率更稳定,进一步减少对磁盘的伤害。 4、TLB(Translation Lookaside Buffer,翻译后备缓冲器)名字起错了,其实它是一个cache.

作者:Towser

链接:https://www.zhihu.com/question/26190832/answer/32387918

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

附CPU与内存相关图片,来源于知乎回答:

CPU的Cache,可以有好几层,而且还分数据Cache和指令Cache。

作者:向往美

链接:https://www.zhihu.com/question/26190832/answer/140368830

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。