实验8Linux的内存管理.ppt_第1页
实验8Linux的内存管理.ppt_第2页
实验8Linux的内存管理.ppt_第3页
实验8Linux的内存管理.ppt_第4页
实验8Linux的内存管理.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验8Linux的内存管理,一、实验目的二、实验工具与设备三、实验预备知识四、实验内容和步骤五、实验总结,一、实验目的,1理解虚拟内存、磁盘缓存的概念。2掌握基本的内存管理知识。3掌握查看实时查看内存、内存回收的方法。,二、实验工具与设备,装有Linux系统的计算机。,三、实验预备知识,Linux的内存管理相当完善,一般不需要用户特别干预。进程是运行于虚拟地址空间的程序。可以说,任何在Linux系统下运行的程序都是进程。大多数的进程都需要虚拟内存。对于典型的Linux应用系统,128MB内存是合理的选择。如果不运行XWindows系统,在一台特殊用途的计算机(如用于调试设备驱动程序的“崩溃和烧毁”系统)上,仅用8MB内存即可工作。,1实时监控内存使用情况(1)在命令行用“free”命令监控内存使用情况在提示符后输入命令free:free表8-1所示为输出情况。,表8-1一个256MB的RAM和512MB交换空间的系统情况,表8-1中第二行输出(Mem:)显示物理内存:total列显示共有的可用内存(不显示核心使用的物理内存,通常大约1MB),used列显示被使用的内存总额,free列显示全部空闲的内存,shared列显示多个进程共享的内存总额,buffers列显示磁盘缓存的当前大小。表8-1中第二行输出(Swap)显示交换空间的信息,与上一行类似。如果该行为全0,则没有使用交换空间。,缺省状态下,free命令以千字节(即1024字节为单位)显示内存使用情况。若使用-h参数,则以字节为单位显示内存使用情况;若使用-m参数,则以兆字节为单位显示内存使用情况。若命令带-s参数,则不间断地监视内存使用情况:free-b-s5。该命令在终端窗口中连续不断地报告内存的使用情况,每5秒钟更新一次。,(2)用vmstat命令监视虚拟内存使用情况在提示符后面输入命令vmstat,显示表8-2所示信息。,表8-2输入命令vmstat显示的信息,vmstat命令是一个通用监控程序,是VirtualMemoryStatistics(虚拟内存统计)的缩写。如果vmstat命令没有带任何命令行参数,将得到一次性的报告。vmstat命令报告主要的活动类型有进程(procs)、内存(以千字节为单位)、交换分区(以千字节为单位)、来自块设备(硬盘驱动器)的输入输出量、系统中断(每秒钟发生的次数),以及中央处理单元(CPU)分配给用户、系统和空闲时分别占用的比例。,2虚拟内存实现的机制由于人们需要的内存容量远远大于物理内存容量,因而有各种策略来解决这个问题,其中最成功的是虚拟内存技术。Linux支持虚拟内存,即用磁盘作为RAM的扩展,相当于扩大了可用内存。运行于Linux的程序只看到大量的可用内存,而不关心哪些在磁盘上。读写硬盘比读写内存慢(大约为读写内存速度的千分之一),因而程序运行较慢。用于虚拟内存的硬盘空间称为交换空间。,Linux虚拟内存的实现需要6种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制和内存共享机制。,内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址。当用户程序运行时,如果发现程序需要的虚地址没有对应的物理内存,即发出请求页要求。如果有空闲的内存可供分配,就请求分配内存(用到内存的分配和回收),并把正在使用的物理页记录在缓存中(用到缓存机制)。如果没有足够的内存可供分配,则调用交换机制,腾出一部分内存。另外,在地址映射中要通过TLB(翻译后援存储器)寻找物理页;交换机制中用到交换缓存,并且把物理页内容交换到交换文件中,也要修改页表来映射文件地址。Linux虚拟内存实现原理如图8-1所示。,图8-1Linux虚拟内存实现原理,一般建议虚拟内存容量应当按物理内存的两倍进行分配。如果物理内存有256MB或更多时,可以缩小虚拟内存。Linux将把大量的内存用于Cache,在资源紧张时收回。只要看到swap为0,或该数很小即可放心,内存放着不用才是最大的浪费。,3内存泄漏和回收内存的方法(1)内存泄漏的定义通常所说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的、大小任意的(内存块的大小可以在程序运行期决定)、使用完后必须显示释放的内存。应用程序一般使用malloc、realloc、new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块。否则,这块内存不能被再次使用,这时就说这块内存泄漏了。,(2)内存泄漏的危害从用户使用程序的角度来看,内存泄漏本身不会产生什么危害。作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终耗尽系统所有的内存。从这个角度来说,一次性内存泄漏没有什么危害,因为它不会堆积。隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏,它更难被检测到。存在内存泄漏问题的程序除了会占用更多的内存外,还会使程序的性能急剧下降。对于服务器而言,如果出现这种情况,即使系统不崩溃,也会严重影响使用。,(3)内存泄漏的检测和回收编写指针比较多的复杂程序时,可能会遇到内存溢出之类的麻烦。在Linux或UNIX下,C和C+语言是最常使用的编程工具。但是,C+程序缺乏相应的手段来检测内存信息,只能用top指令观察进程的动态内存总额。而且程序退出时,无法获知任何内存泄漏信息。,4使用Linux命令回收内存可以用ps、kill两个命令检测内存使用情况和进行回收。使用超级用户权限时,用命令“ps”可列出所有正在运行的程序名称和对应的进程号(PID)。kill命令的工作原理是向Linux操作系统的内核送出一个系统操作信号和程序的进程号(PID)。以下例子说明如何用命令ps和参数v来高效率回收内存:,以下命令可以回收ping命令的内存:kill92818,四、实验内容和步骤,1监控内存使用情况用“free”命令监控内存使用情况:freefree-b-s5用vmstat命令监视虚拟内存使用情况:vmstat,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论