buffer 和 cache (转)
Cache是把最常用的工具放在手边, Buffer是你家的垃圾桶,你平时的垃圾先扔在垃圾桶里,等垃圾桶满了再扔垃圾。
Cache的存在原因是对资源调用的空间局部性,你现在在看一本数学书,那么极有可能你一会儿还要再去图书馆的数学书架上找同类型的书,所以你在图书馆找了一个离数学区很近的位置坐下,你微信和一些人聊天,聊的最多的那个往往在微信消息列表靠顶部的位置,因为聊的最多,很有可能你一会还要和她聊,你上午访问知乎,很有可能最近几天你都要访问,所以浏览器就把知乎网站的静态资源先缓存下来,下次访问无需再次下载,这是Cache
Buffer的存在原因是生产者和消费者对资源的生产/效率速率不一致。比如你看视频,视频控件会先预加载几秒的视频资源到缓冲区,看视频的你是资源消费者,你消费视频的速率就是视频资源按照其时间速率正常播放,但是你下载视频的速率可能时快时慢。如果刚开始先预加载几秒资源缓冲区,就算有一两秒网络拥塞了,视频还能顺畅播放,如果网速给力,则会有更多的资源被下载进来,这时资源会越积越多,这时可能缓冲区满了,就暂时停止加载,等你的资源消费的缓冲区空出一部分了,再继续开始加载,这样虽然视频的下载速度是波动的,但是你看的视频是稳定等速率播放的。当你有资源要写入硬盘时,硬盘的最小写入大小往往是一个block,一般是4KB,但是你准备写入数据的时候,有可能是一大堆字符,所以这时,你要把数据写到内存里,就要先准备好4KB的数据,然后写4KB,再准备4KB数据,而不是每次准备好了一个byte的数据,就要写到磁盘里,这时,你是生产者,磁盘是消费者,磁盘是每次4KB的速率消费数据,而你生产数据是字节流方式生产,这时就需要一个缓冲区,暂时存放那些还没攒够4KB的数据。网络连接过程中,内核中保持的TCP连接,因为网速和对面生产者的原因,可能会有大量数据写入TCP的缓冲区,一方面因为数据可能seq对不上,需要等待,另一方面是因为对应该socket的应用程序并不一定能及时地把这些数据取走(消费)
cache是自己写了准备自己读的,buffer是自己写了准备别人读的
buffer 和 cache (转)的更多相关文章
- buffer和cache有什么本质区别
在free命令展示机器的内存消耗情况,会像这样展示
- Buffer和Cache的区别
- Linux Free命令各数字含义及Buffer和Cache的区别
Linux Free命令各数字含义及Buffer和Cache的区别 Free 命令的各数字含义 命令演示 [root@vm1 ~]# free total used free shared buffe ...
- linux free命令中buffer与cache的区别
linux free命令中buffer与cache的区别 2012-05-15 个评论 收藏 我要投稿 linux free命令中buffer与cache的区别 ~$ ...
- free命令、buffer与cache的区别
freefree 命令相对于top 提供了更简洁的查看系统内存使用情况: # free total used free shared buffers cached Mem: 255988 231704 ...
- 【Linux】基于Linux的buffer和cache学习
缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘.其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读 ...
- 2015-01-27-从实验出发理解buffer与cache区别-吴伟顺
通过du(find) 与 cat 体现buffer与cache差异实验: 实验表明: 1 通常 buffer << cache 2 "文件系统"相关内容(ino ...
- Linux-手动释放缓存(Buffer、Cache)
/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对 当前kernel的行为做出调整.那么我们可以通过调整/ ...
- Linux中Buffer和Cache的区别
1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚 ...
- [转帖]buffer与cache的区别
作者:沈万马链接:https://www.zhihu.com/question/26190832/answer/146259979来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
随机推荐
- MySQL MHA 高可用集群部署及故障切换
MySQL MHA 高可用集群部署及故障切换 1.概念 2.搭建MySQL + MHA 1.概念: a)MHA概念 : MHA(MasterHigh Availability)是一套优秀的MySQL高 ...
- 编译安装基于fastcgi模式的多虚拟主机的wordpress和discuz的LAMP架构
一.环境准备 两台主机: httpd+php(fastcgi模式) mariadb 服务器 软件版本: mariadb-10.2.40-linux-x86_64.tar.gz apr-1.7.0.ta ...
- Solution -「SDOI 2018」「洛谷 P4606」战略游戏
\(\mathcal{Description}\) Link. 给定一个 \(n\) 个点 \(m\) 条边的无向连通图,\(q\) 次询问,每次给出一个点集 \(s\),求至少在原图中删去多 ...
- Solution -「POI 2010」「洛谷 P3511」MOS-Bridges
\(\mathcal{Description}\) Link.(洛谷上这翻译真的一言难尽呐. 给定一个 \(n\) 个点 \(m\) 条边的无向图,一条边 \((u,v,a,b)\) 表示从 ...
- Solution -「CF 1392H」ZS Shuffles Cards
\(\mathcal{Description}\) Link. 打乱的 \(n\) 张编号 \(1\sim n\) 的数字排和 \(m\) 张鬼牌.随机抽牌,若抽到数字,将数字加入集合 \(S ...
- Cobbler 批量安装操作系统
文章目录 环境准备 部署cobbler cobbler语法检查以及排错 问题1 问题2 问题3 问题4 问题5 问题6 问题7 问题8 修改dhcp模板 重启服务,再次检查 镜像配置 镜像导入 kic ...
- verification TLM传输数据导致多线程访问同一个数据
TLM传输数据导致多线程访问同一个数据 原因 TLM发送数据跟mailbox类似,都是发送的引用,这样发送端和接收端的引用都指向同一个数据,这样就会出现发送端修改数据会影响到接收端,比如发送的时候数据 ...
- Lesson11——Pandas去重函数:drop_duplicates()
pandas目录 "去重"通过字面意思不难理解,就是删除重复的数据.在一个数据集中,找出重复的数据删并将其删除,最终只保存一个唯一存在的数据项,这就是数据去重的整个过程.删除重复数 ...
- jenkins pipeline构建项目
以前用的jenkins自由风格发布代码.界面丑陋,出现问题位置不够清晰.今天改进一下流程使用jenkins pipeline构建项目. 学习使我快乐 步骤一.安装pipeline插件 点击系统管理-& ...
- ShaderLab实现Vignette过场动画效果
实现Vignette过场动画效果 postprocessing中有渐晕效果(Vignette),镜头可以由边缘往中间慢慢变黑: 但是我打包WebGL的时候提示我postprocessing,GPU不支 ...