一口气简单介绍Buffer与Cache
本文最后更新于6 天前,其中的信息可能已经过时,如有错误请发送邮件到2156936367@qq.com

Buffer(缓冲区)

目的:主要是为了解决写操作时速度不匹配问题(快慢同步)

应用场景:当两个设备或进程进行数据传输时,如果它们的速度不一致(一个快,一个慢),就需要 Buffer。

工作原理:数据从“快”的一端流向“慢”的一端时,先由 Buffer 接住,积累到一定量后,再统一发送给慢的一端;或者反之,慢的一端慢慢填满 Buffer,快的一端一次性取走。

举例:就像一个漏斗,上面就是buffer

典型场景

  • 将数据写入硬盘时(内存快,硬盘慢,先写到 Buffer,攒够了再落盘)。
  • 网络数据包的传输(网卡缓冲区)。

Cache(缓存)

目的:主要是为了解决读操作时重复获取问题(提高访问速度)

应用场景:当某个数据被频繁使用,或者获取这个数据的代价很高(比如要从很远的服务器下载,或者要经过复杂的计算),我们就把它存在离使用者最近的地方。

工作原理:第一次读取数据时,虽然慢,但读完后保留一份副本在 Cache 中。下一次再需要同样的数据时,直接从 Cache 拿,不用再去源头取。

典型场景

  • CPU 的 L1/L2/L3 缓存。
  • Redis / Memcached(数据库缓存)。
  • 浏览器缓存。

在Linux中的两者

在现代Linux中,Buffer和Cache都由Page Cache统一管理

为什么 Linux free -h经常显示内存快满了,但 buff/cache 占用很高?

这是好事!Linux 的逻辑是:“空闲的内存就是浪费的内存”。如果你有没用的空闲内存,Linux 会自动把硬盘上读取过的文件存在 Cache 里。

  • 如果你启动新程序需要内存,Linux 会瞬间释放这些 Cache 给程序用(Available 才是你真正可用的内存)。
  • 如果不启动新程序,这些 Cache 能让你打开文件的速度飞快。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇