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来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
随机推荐
- 读取.properties配置文件的方式
一.Properties类解读: 1.Properties类本质其实还是HashTabe,及底层的实现是HashTable public class Properties extends Hashta ...
- Java基础复习(三)
1. &和&&的区别. &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则 ...
- docker 网络概述及网络模式详解
docker 网络概述及网络模式详解 1.网络概述 2.网络模式详解 1.网络概述: Docker 网络实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0) ...
- OSPF路由协议基础知识
OSPF路由协议 1.OSPF的基本概念 2.OSPF邻接关系的建立 3.OSPF的应用环境 4.OSPF的基本配置命令 1.OSPF区域为了适应大型的网络,OSPF在AS(自治系统)内划分多个区域. ...
- 深入Java微服务之网关系列1:什么是网关
前言 近来,在想着重构一个新的产品.准备采用微服务的技术解决方案,来搭建基础设施框架.网关,是一个必不可少的组件.那么,网关到底是什么? 其又有什么特点或者特性,成为微服务必不可少的组件呢?今天, ...
- Node介绍
https://segmentfault.com/a/1190000006121183 一. 概述 Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google ...
- 基于GDAL库,读取.nc文件(以海洋表温数据为例)C++版
对于做海洋数据处理的同学,会经常遇到nc格式的文件,nc文件的格式全称是NetCDF,具体的详细解释请查询官网[https://www.unidata.ucar.edu/software/netcdf ...
- 10、Linux基础--find、正则、文本过滤器grep
笔记 1.晨考 1.每个月的3号.5号和15号,而且这天是星期六时执行 00 00 3,5,15 * 6 2.每天的3点到15点,每隔3分钟执行一次 */3 3-15 * * * 3.每周六早上2点半 ...
- 今天你花里胡哨了吗 --- 定制属于自己的linux ssh迎宾信息
请开始你的表演 linux-oz6w:~ # cat << 'eof' > /etc/profile.d/ssh-login-info.sh #!/bin/sh # 输出一个图像 e ...
- Python+selenium自动循环扔QQ邮箱漂流瓶
Python代码如下: # coding=utf-8 from selenium import webdriver from time import sleep from random import ...