cache 和 buffer

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cache 和 buffer相关的知识,希望对你有一定的参考价值。

顺序:cpu---cache---mem(内存)---buffer---hard drive(硬盘)

cached是cpu与内存间的,buffer是内存与磁盘间的,都是为了解决速度不对等的问题

cached是高速缓存,buffer是缓冲。

buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的

Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache

例子:
[[email protected] ~]# free -m
total used free shared buffers cached
Mem: 7869 7651 218 1 191 5081
-/+ buffers/cache: 2378 5490
Swap: 478 139 339

计算:

这里使用1、2 分别代表第一行和第二行的数据

total1:表示物理 内存总量
used1:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用
free1:未被分配的内存
shared1:共享内存,一般系统不会用到,这里也不讨论
buffers1: 系统分配但未被使用的buffers 数量
cached1:系统分配但未被使用的cache 数量
used2:实际使用的buffers 与cache 总量,也是实际使用的内存总量
free2:未被 使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存

可以整理出如下等式

total1 = used1 + free1
total1 = used2 + free2
used1 = buffers1 + cached1 + used2
free2 = buffers1 + cached1 + free1

具体计算

7869 = 7651 + 218
7869 = 2378 + 5490 #7868基本相等,因为有shared)
7651 = 191 + 5081 + 2378 #7650 基本相等,因为有shared)
5490 = 191 + 5081 + 218

参考:https://www.cnblogs.com/chenpingzhao/p/5161844.html

感谢!

以上是关于cache 和 buffer的主要内容,如果未能解决你的问题,请参考以下文章

文件操作和网络通信

NIO编程

Java多线程程序挂起

软件绘制源码流程分析

JS 文件类型转换

mysql参数优化