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来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
随机推荐
- 使用haproxy的ACL实现基于文件后缀名的动静分离
一.环境准备 二.实现proxy [root@localhost ~]# yum -y install haproxy #创建子配置 [root@localhost ~]# mkdir /etc/ha ...
- YOLOv5模型训练及检测
一.为什么使用YOLOv5 二.软件工具 2.1 Anaconda https://www.anaconda.com/products/individual 2.2 PyCharm https://w ...
- (4)Canal多实例使用
1.前言 很多时候,我们很多业务场景可能只需要同步多个或者单个数据库多个或者单个表的数据,canal提供了多实例(Instance)功能让我们可以处理这些业务场景.废话少说,让我们来学习下这块知识点. ...
- 手把手教你使用HarmonyOS本地模拟器
2021年的华为开发者大会(HDC2021)上,我们随DevEco Studio 3.0 Beta1版本发布首次推出了本地模拟器(也称为Local Emulator),支持模拟手机品类. 我们通过下面 ...
- Java在算法题中的输入问题
Java在算法题中的输入问题 在写算法题的时候,经常因为数据的输入问题而导致卡壳,其中最常见的就是数据输入无法结束. 1.给定范围,确定输入几个数据 直接使用普通的Scanner输入数据范围,然后使用 ...
- JAVA8学习——深入浅出方法引用(学习过程)
方法引用:method reference 先简单的看一下哪里用到了方法引用: public class MethodReferenceTest { public static void main(S ...
- .NET 云原生架构师训练营(权限系统 系统演示 ActionAccess)--学习笔记
目录 模块拆分 环境配置 默认用户 ActionAccess 模块拆分 环境配置 mysql migration mysql docker pull mysql docker run -p 3306: ...
- oracle-11G转10G
先查询directory的地址 导出的文件必须放在此目录select * from dba_directories;找到directory_name的值 ,也可以新建一个create director ...
- HDFS免重启挂载新磁盘
背景 在生产环境中,集群节点磁盘大小不同,其使用率也会不同,HDFS虽有均衡策略,但也会有数据不平衡的情况,有些节点磁盘就会被打满,然后这个节点就不健康了(Unhealthy Nodes),Yarn的 ...
- 『无为则无心』Python基础 — 61、Python中的迭代器
目录 1.迭代的概念 2.迭代器的概念 3.可迭代的对象(Iterable) 4.迭代器对象(Iterator) 5.迭代器的使用体验 (1)基本用法 (2)实际应用 1.迭代的概念 (1)什么是迭代 ...