[svc]linux buffer和cache的区别

本文详细解释了缓存(cache)与缓冲(buffer)的概念及其应用场景。缓存主要用于提高CPU访问内存的速度,而缓冲则用于解决不同设备间数据传输速度不匹配的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通俗理解buffer,cache

806469-20180302173509117-1921700487.png

  1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能。
    806469-20180302173938204-1761909851.png

Cache并不是缓存文件的,而是缓存块的(块是I/O读写最小的单元);Cache一般会用在I/O请求上,如果多个进程要访问某个文件,可以把此文件读入Cache中,这样下一个进程获取CPU控制权并访问此文件直接从Cache读取,提高系统性能。

  1. Buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据;通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设备与存储速度慢的设备进行通信时,存储慢的数据先把数据存放到buffer,达到一定程度存储快的设备再读取buffer的数据,在此期间存储快的设备CPU可以干其他的事情。
    806469-20180302173736686-849652690.png

Buffer:一般是用在写入磁盘的,例如:某个进程要求多个字段被读入,当所有要求的字段被读入之前已经读入的字段会先放到buffer中。

最近在搞influxdb,发现他写数据有个wal((Write Ahead Log)),有个缓冲机制.
wal: 最近写的点数的临时缓存。为了减少访问永久存储文件的频率,InfluxDB将最新的数据点缓冲进WAL中,直到其总大小或时间触发然后flush到长久的存储空间。这样可以有效地将写入batch处理到TSM中
参考: https://jasper-zhang1.gitbooks.io/influxdb/content/Concepts/glossary.html

在搞高性能web时候

buffer 缓冲 写操作 写缓冲
cache  缓存 读操作 读缓冲

高性能web一般考虑优化cache读缓存

参考:
https://www.zhihu.com/question/26190832

Buffer常见的是这个:

9e792b8fgy1fmg2iptgjrj20eb0apgvk.jpg
对,就是铁道端头那个巨大的弹簧一类的东西。作用是万一车没停住,撞弹簧上减速慢,危险小一些。叫缓冲。

Cache常见的是这个:

9e792b8fgy1fmg2iug9i8j20i20dfh2j.jpg

没错,就是一种保管箱。看到右边那个被锈掉的Food Cache没?这是部署在森林里的存应急物资的保管箱。功能是把你需要用的东西放在更容易拿到的地方。虽然常用准确翻译叫缓存,但个人以为意思表达的不对,丢了一半的功能。台湾的翻译更好,叫快取。

细节
参考:
http://www.cnblogs.com/chenpingzhao/p/5161844.html

  • Free中的buffer和cache (它们都是占用内存)基于内存的
  • cached是cpu与内存间的,buffer是内存与磁盘间的,都是为了解决速度不对等的问题
  • buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的

A buffer is something that has yet to be “written” to disk.

A cache is something that has been “read” from the disk and stored for later use ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值