内存是linux内核管理的最重要的资源之一,内存管理系统是linux操作系统中最重要的部分,对linux初学者来说,熟悉linux内存管理非常重要。



一个进程是一个程序,在虚拟地址空间中运行。可以说,任何运行在Linux系统下的程序是一个过程。Linux系统包括交互过程和间歇过程,互动的过程控制和运行的外壳,它可以运行在前台或后台运行。批处理过程不属于终端和提交顺序执行队列。大部分程序需要虚拟内存。



需要多少内存



128MB内存是一个典型的Linux应用系统的合理选择。如果你不运行X窗口系统,你可以在一个专用机,如调试设备驱动程序的崩溃,和8MB内存。



作者做了实验。需要在128MB、256MB编译内核的时间几乎是相同的,不到3点。班中(作者的Linux分布是Mandrake Linux 9.1,2.4.21)。在一个系统只有8MB内存,这将需要更长的时间来编译,如Web浏览器的多媒体应用将运行更平稳的时候有足够的内存,尤其是当编译程序,一边上网浏览。因此,如果只有128MB内存可预期的性能会降低。同样的,如果你想开发一个应用程序,需要消耗大量的内存,它可能需要更多的内存。所以,需要多少内存的工作要求确定。



内存使用的实时监控



1。在命令行中使用;Free指挥监控内存使用#自由



全部使用的空闲共享缓冲区缓存



Mem:256024192284637400 10676101004



缓冲区/缓存: + 8060475420



互换:5220720522072



上面的代码给出了一个256MB的RAM和512MB的交换空间系统。第三线输出(MEM:)显示物理内存。总列不显示核心使用的物理内存(通常约1MB),使用的列显示总的内存使用量(第二行不缓冲)。自由列显示所有的记忆,是没有用的。共享栏显示多个进程共享的内存总量。缓冲栏显示磁盘缓存的当前大小。第五线(互换)变化的空间,和显示的信息是类似的,如果这种行为上面。都是0,然后交换空间是没有用的。在一个国家违约,免费的命令在一千字节显示内存使用(,是的,1024个字节)。用h参数以字节为单位显示内存使用情况;或者使用-m参数以兆字节为单位显示内存使用。你也可以使用命令来不间断地利用S参数监视内存使用情况:



#自由B S5



此命令将继续报告终端窗口中的内存使用情况,并每隔5秒更新一次。



2。vmstat命令监视虚拟内存的使用# vmstat的排斥



过程-----------记忆-------------互换------- IO ------系统------ CPU ----



R B swpd免费buff缓存太Bi Bo在CS



100636921070410100 002394212610548457



vmstat命令()是一个通用的监控程序,对虚拟内存统计的缩写(虚拟内存统计)。如果你不使用任何命令行参数使用vmstat命令时,一次报告会得到。vmstat命令报告的主要活动过程(过程)、内存(KB),互换(KB),从块设备(硬盘驱动器)中断输入输出系统(每秒的地方),以及中央处理单元(CPU)分配给用户的系统和业余时间分别占据的比例。



虚拟内存的实现机制



存储管理子系统是操作系统中最重要的部分。在早期的计算机时代,由于人们所需要的内存数量比物理内存大得多,所以各种策略的设计来解决这个问题,其中最成功的是虚拟内存技术,它使得竞争过程的有限物理内存的系统内存需要满足。虚拟内存,通过进程间共享内存,使系统似乎比实际内存更多的内存容量,Linux支持虚拟内存,使用磁盘作为扩展内存,可用内存是有效扩大核心店。目前未使用的内存块硬盘给出了用于其他目的的记忆。当原有的内容和使用,然后读回内存。在Linux运行该程序,只看到大量的可用内存,它不关心这部分磁盘上。当然,读写硬盘比内存慢(约一千时间变慢),所以程序运行缓慢。这部分的硬盘,使用虚拟内存被称为交换空间。



虚拟内存技术不仅允许我们使用更多的内存,而且还提供以下功能:



1。大的寻址空间



操作系统使系统出现一个更大的内存空间比实际的内存,虚拟内存可多次实际物理空间中的系统。每个进程运行在其独立的虚拟地址空间,这些虚拟空间是完全相互隔离,所以过程互不影响,同时,硬件的虚拟内存机制可以设置一些记忆区到非写的,它可以保护代码和数据免受恶意程序干扰。



2。公平的物理内存分配



内存管理子系统允许系统中的每一个正在运行的进程公平地共享系统中的物理内存。



三.共享虚拟内存



尽管虚拟内存允许一个进程有自己的虚拟地址空间,有时需要共享内存之间的过程。例如,它是可能的,在系统中的几个进程的运行bash命令的同时,为了避免在每个进程的虚拟内存空间的bash程序复制一个副本,更好的解决方案是,只有一个拷贝bash中存在的物理内存,它是在多个进程共享一个动态库的另一种方式是在流程执行代码共享。共享内存可以作为进程间通信(IPC),是由多个进程共享内存交换信息。Linux支持共享内存系统V IPC机制