buffer和cache有什么本质区别

简介: 在free命令展示机器的内存消耗情况,会像这样展示         buffered 和cached本质内容有什么区别呢?    我没搞明白。我觉得需要追根溯源会更加理解本质。   英文是这样解释   A buffer is something that has yet to be "written" to disk.  这些数据准备写到磁盘的,但还没有写到磁盘,缓存在内存中。

 

在free命令展示机器的内存消耗情况,会像这样展示

 

 

 

 

buffered 和cached本质内容有什么区别呢?

 

 我没搞明白。我觉得需要追根溯源会更加理解本质。

 

英文是这样解释

 

A buffer is something that has yet to be "written" to disk.  这些数据准备写到磁盘的,但还没有写到磁盘,缓存在内存中。

 

 

之所以有这样的机制,因为频繁地写入磁盘,会造成磁盘i/0,所以一般数据不会马上写入到磁盘去,而是定期积累到一定量后写入磁盘去。

buffer的英文本意是缓冲器,缓冲一下,不要马上写入到磁盘,冲击磁盘。

 

这个buffer大小由什么设置的呢? 不知道。待补充。

 

 

A cache is something that has been "read" from the disk and stored for later use.

从磁盘上读取数据存储到内存中缓存起来,方便下一次使用。目的是避免频繁的去磁盘上读取数据,直接从内存中读取使用了。

之所以有cache,一般是对频繁使用到的数据(读的数据),进行缓存到内存。

 

 

------------------------------------------

从上面分析看,两个内存区域要解决的问题和目标都不同。一个是解决频繁读的问题。另外一个是解决频繁写入到磁盘的问题。

 

但相同点是:他们都是为了减少磁盘i/0次数。因为磁盘是机械性的旋转,靠磁头定位来读、写数据。频繁读、写磁盘,就会造成磁头频繁定位,这个就是磁盘i/0(数据库系统的实现里面有磁盘的原理介绍,然后专门讲解实现一个数据库系统如何针对磁盘做优化)

 

 

free命令中的used项(已经使用的内存),其实是已经包含了buffer和cache部分

根据上面对buffer和cache的分析,buffer和cache部分实际上是可以拿来使用的内存区(都是缓存数据,释放掉这部分内存空间并不影响)

正因为这样,为了想要准确得知到底有多少可用的内存,linux的free命令,会第二列专门给出减去buffer和cache部分的统计结果来看。

 

第二列 :-/+ buffers/cache

 

显示两个值,第一个值,是used-buffers-cache的计算结果。第二个值 是used+buffers+cache的计算结果

 

 

 

思考

从操作系统角度来看,它只关注真正的物理内存剩余多少。所以buffer区域和cache区域它也认为不是剩余的。这没有错。操作系统关注是物理内存真实有多少。

 

而应用程序角度来看,它关注的是有多少物理内存是自己可以调用的。它认为buffer和cache部分也是可以拿过来用的。也没有错误。

 

 

现实中例子用什么来形象化描述呢?

 

一个人有多少钱,站在不同的角度算法不一样。

 

有人存款10万。我们只是看它真实钱有多少。那就是10万(操作系统这么认为)

而从另外一个角度,他有房子,如果需要,房子可以卖掉,卖成钱,估算一下价格。假设房子80万,那么他的钱就是80+10=90万(应用程序这么认为)

 

两个计算方式都没有错。角度不同。

 

buffer和cache,对于应用程序而言,觉得这部分是可以回收的(我需要的时候随时可以用。房子随时可以套现拿到钱使用)

 

 

 

 

目录
相关文章
|
算法 安全 PHP
密码学系列之二:密码学基本概念
密码学系列之二:密码学基本概念
1192 0
密码学系列之二:密码学基本概念
|
Java fastjson Apache
Spring Boot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
Spring Boot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
492 1
|
SQL 监控 Oracle
增量数据同步验证
增量数据同步验证
420 3
|
数据库
文献速读|毕设不愁了,中科院二区5分非肿瘤双疾病分析思路
研究摘要:一项发表于2023年《Molecular Neurobiology》(IF=5.1)的论文探讨了帕金森病(PD)与重度抑郁症(MDD)的共病基因。研究通过分析基因表达谱数据识别出PD和MDD的共同基因,特别是AQP9、SPI1和RPH3A三个关键基因。这些基因在两种疾病中均表现出显著差异表达,且与中性粒细胞和单核细胞的功能有关。研究使用生物信息学方法进行基因功能注释和蛋白质相互作用网络分析,并通过实验验证了基因在模型系统中的作用,强调了这些基因在疾病病理生理中的潜在角色。
521 0
|
存储 缓存 监控
Redis 7.0性能大揭秘:如何优化缓存命中率?
Redis 7.0,这货不仅仅是一个简单的缓存工具,它更是一款高性能的数据结构服务器。现在,大家都知道缓存命中率对性能影响特别大,但怎么优化它呢?
407 1
|
知识图谱
Obsidian使用初体验
Obsidian使用初体验
367 0
|
JSON JavaScript 前端开发
【2023-11-01】一款基于 pdf.js 的 PDF 批注注释插件库(纯JS、高亮、画笔、多边形、历史记录)
基于纯 JavaScript 和 PDF.js 做的一款 PDF 批注拓展插件-PDFMaster,一款仍能兼容支持IE 11的PDF批注插件,界面美观功能强大,有无开发经验都可以快速简单快速使用。
537 0
【2023-11-01】一款基于 pdf.js 的 PDF 批注注释插件库(纯JS、高亮、画笔、多边形、历史记录)
【鸿蒙软件开发】ArkTS基础组件之Marquee(文字跑马灯)、QRCode(二维码生成)
【鸿蒙软件开发】ArkTS基础组件之Marquee(文字跑马灯)、QRCode(二维码生成)
758 0
|
Kubernetes Cloud Native API
kubernetes|云原生| 如何优雅的重启和更新pod---pod生命周期管理实务
kubernetes|云原生| 如何优雅的重启和更新pod---pod生命周期管理实务
615 0
|
存储 编解码 人工智能
数字藏品APP开发 | 国内NFT交易平台搭建
数字藏品是利用区块链技术识别权益归属的数字作品、艺术品和商品。数字藏品可以在区块链网络中标记其拥有者并追溯其后续流通,包括但不限于数字图片、音乐、视频、电子门票、数字纪念品等形式。 而数字藏品App是一种基于移动端的应用软件,为用户提供数字化的收藏品展示、管理以及交流共享服务。 简单来说,数字藏品APP系统开发就是通过区块链技术确认权利,可以追溯和流通的数字作品或商品。数字藏品就技术特性而言,与流行的NFT没有区别。主要使用ERC-721标准。 二、我国数字藏品有哪些特点? 与国外NFT大多建立在公链上不同,在我国法律规则下,数字藏品需要基于联盟区块链技术生成和分发,其炒作属性要严格控