日期:2014-05-16  浏览次数:20630 次

Linux内存管理机制

??内存是Linux内核所管理的最重要的资源之一,内存管理系统是操作系统中最为重要的部分。对于Linux的初学者来说,熟悉Linux的内存管理非常重要。
? ?
进程是运行于虚拟地址空间的一个程序。可以说,任何在Linux系统下运行的程序都是进程。Linux系统中包括交互进程和批处理进程。交互进程是由
Shell控制和运行的,既可以在前台运行,也可以在后台运行。批处理进程不属于某个终端,被提交到一个队列中以便顺序执行。大多数的进程都需要虚拟内
存。

? ??一般需要多少内存

? ? 对于典型的Linux应用系统,128MB内存是合理的选择。如果不运行X-Window系统,那么在一台特殊用途的机器(比如用于调试设备驱动程序的“崩溃和烧毁”系统)上仅用8MB内存就可以工作。

? ?
笔者曾经做过实验,在128MB和256MB下编译内核所需的时间几乎一样,都少于3分半钟(笔者的Linux发行版本是Mandrake Linux
9.1,内核2.4.21)。在一个只有8MB内存的系统上,编译需要的时间会更长一些。类似Web浏览器这样的多媒体应用软件,在内存充足时会运行得更
流畅,特别是在一边编译程序,一边上网浏览的时候更是如此。因此,如果只有128MB内存,则预期的性能会有所降低。类似地,如果要开发消耗大量内存的应
用程序,可能会要求更多的内存。所以,需要多少内存由工作需求来决定。

? ??实时监控内存使用情况

? ??1.在命令行使用“Free”命令监控内存使用情况

? ? #free
? ?? ?? ?? ?? ???total? ?used? ? free shared buffers cached
? ? Mem:? ?? ???256024 192284? ?63740? ?? ?0? ?10676 101004
? ? -/+ buffers/cache:??80604? ?75420
? ? Swap:? ?? ? 522072? ?? ?0??522072

? ?
上面代码给出了一个256MB的RAM和512MB交换空间的系统情况。第三行输出(Mem:)显示物理内存。Total列不显示核心使用的物理内存(通
常大约1MB)。Used列显示被使用的内存总额(第二行不计缓冲)。Free列显示全部没有使用的内存。Shared列显示多个进程共享的内存总额。
Buffers列显示磁盘缓存的当前大小。第五行(Swap:)对换空间,显示的信息类似上面。如果这行为全0,那么就没有使用对换空间。在缺省的状态
下,free命令以千字节(也就是1024字节为单位)来显示内存使用情况。使用-h参数,以字节为单位显内存使用情况;或者使用-m参数,以兆字节为单
位显示内存使用情况。还可以通过-s参数,使用命令来不间断地监视内存使用情况:

? ? #free -b -s5