转载笔记:Linux 中 Buffer 和 Cache 的区别
存储器
- CPU :
- 速度超快
- Cache (缓存区):
- 充当是 CPU 和主内存的中间件
- 容量较小
- 速度很快
- 保存着 CPU 刚用过的数据或循环使用的部分数据
- 不是缓存文件,而是缓存块(块是I/O读写最小的单位)
- 一般用在 I/O 请求上
- Buffer (缓冲区):
- 用于存储速度不同步的设备或优先级不同的设备之间传输数据
- 可以减少进程件通信需要等待的时间
Cache 是"为了弥补告诉设备和低速设备之间的矛盾"而设立的中间层。
问题:CPU 速度很快,但 CPU 执行的指令是从内存取出,计算的结果也要写如内存,但内存的响应速度跟不上 CPU。
解决办法:在 CPU 和内存中间加一块"蓄水池",即 Cache 。
当 CPU 要读内存的时候先读 Cache 再读内存,
(初始化:)但一开始 Cache 是空的,只能从内存区,所以这时很慢(CPU 需要等待内存的响应)。但从内存取回的还有其他的、当前不需要的指令,然后把这些指令存在 Cache 里备用;
CPU 再区指令的时候还是先读 Cache , 有所需指令,直接取出,无则等待内存响应。
Cpu -> CPU.Cache -> 内存 -> 磁盘.Cache -> 磁盘 ?
CPU 的 Cache : 可以有好几层,而且还分为 数据Cache 和 指令Cache。
磁盘 的 Cache:
Buffer: 化零为整(比如在内存里开辟了一块 Buffer ,数据暂时写入 Buffer ,攒到一定大小在一次性写入硬盘)
总结
- Cache的存在是为了解决什么问题?速度太慢了,要加快速度! 是系统两端处理速度不匹配时的一种这种策略。
- Buffer的存在是为了解决什么问题?找个临时的存储空间! 减少短期内突发 I/O 的影响 。(网络上下载东西,瞬时速率可能有较大变化,引入Buffer使得OS接收数据的速率稳定,减少对磁盘的伤害)
- 相同点:都是2个层面的中间层,都是内存
- 不同点:Cache 解决的是时间问题,Buffer 解决的是空间问题。
- 解决方案:内存RAM, Cache 利用的是 RAM 提供的高读写速度, Buffer 利用的是 RAM 提供的存储容量。

浙公网安备 33010602011771号