试解Linux中的free

在我的机器上运行free命令:
root@Localhost:/home/hayfeng# free
             total       used       free     shared    buffers     cached
Mem:        153832     141612      12220          0      17340      94580
-/+ buffers/cache:      29692     124140
Swap:       281096      10432     270664
第一行:
total = used + free      |  153832 = 141612 + 12220
第二行:
-buffers/cache(代表用户程序使用的空间,不包括内核为用户线程加载的文件映射):
   = used - ( buffers + cached )   |   29692 = 141612 - ( 17340 + 94580 )
+buffers/cache(代表用户进程可以使用的空间),当然内核映射的线性文件也可以映射给用户进程,因此:
   = free + ( buffers + cached )   |  124140 = 12220 + ( 17340 + 94580 )
-----
从上面的-buffers/cache 和 + buffers/cache 来看,buffers和cached是属于内核的,但可以被用户进程使用。因此:
1、计算用户进程所使用的物理内存时的计算方法是:已经用掉的内存总量减去buffers和cached。(哎,难道内核线程不需要私有内存了?)
2、计算用户进程所能够使用物理内存时的计算方法是:可用的物理内存总量加上buffers和cached。因为内核映射的物理内存可以被用户进程共享嘛。

这些东西,会者不难,难者不会啊!

该文章讨论贴:
http://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxK&Number=747039&page=0&view=expanded&sb=5&o=7&fpart=


评论

此博客中的热门博文

Linux/ARM Page Table Entry 属性设置分析

提交了30次才AC ---【附】POJ 2488解题报告

笔记