Loading

转载笔记: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 提供的存储容量。
posted @ 2025-03-12 22:11  一起滚月球  阅读(31)  评论(0)    收藏  举报