实验8+linux的内存管理

上传人:xh****66 文档编号:61737181 上传时间:2018-12-11 格式:PPT 页数:25 大小:181KB
返回 下载 相关 举报
实验8+linux的内存管理_第1页
第1页 / 共25页
实验8+linux的内存管理_第2页
第2页 / 共25页
实验8+linux的内存管理_第3页
第3页 / 共25页
实验8+linux的内存管理_第4页
第4页 / 共25页
实验8+linux的内存管理_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《实验8+linux的内存管理》由会员分享,可在线阅读,更多相关《实验8+linux的内存管理(25页珍藏版)》请在金锄头文库上搜索。

1、实验8 Linux的内存管理,一、实验目的 二、实验工具与设备 三、实验预备知识 四、实验内容和步骤 五、实验总结,一、实验目的,1理解虚拟内存、磁盘缓存的概念。 2掌握基本的内存管理知识。 3掌握查看实时查看内存、内存回收的方法。,二、实验工具与设备,装有Linux系统的计算机。,三、实验预备知识,Linux的内存管理相当完善,一般不需要用户特别干预。 进程是运行于虚拟地址空间的程序。可以说,任何在Linux系统下运行的程序都是进程。大多数的进程都需要虚拟内存。 对于典型的Linux应用系统,128MB内存是合理的选择。如果不运行X Windows系统,在一台特殊用途的计算机(如用于调试设备

2、驱动程序的“崩溃和烧毁”系统)上,仅用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)显示交换空间的信息,与上一行类似。如果

3、该行为全0,则没有使用交换空间。,缺省状态下,free命令以千字节(即1024字节为单位)显示内存使用情况。若使用-h参数,则以字节为单位显示内存使用情况;若使用-m参数,则以兆字节为单位显示内存使用情况。 若命令带-s参数,则不间断地监视内存使用情况:free -b -s5。 该命令在终端窗口中连续不断地报告内存的使用情况,每5秒钟更新一次。,(2)用vmstat命令监视虚拟内存使用情况 在提示符后面输入命令vmstat,显示表8-2所示信息。,表8-2 输入命令vmstat显示的信息,vmstat命令是一个通用监控程序,是Virtual Memory Statistics(虚拟内存统计)的

4、缩写。如果vmstat命令没有带任何命令行参数,将得到一次性的报告。 vmstat命令报告主要的活动类型有进程(procs)、内存(以千字节为单位)、交换分区(以千字节为单位)、来自块设备(硬盘驱动器)的输入输出量、系统中断(每秒钟发生的次数),以及中央处理单元(CPU)分配给用户、系统和空闲时分别占用的比例。,2虚拟内存实现的机制 由于人们需要的内存容量远远大于物理内存容量,因而有各种策略来解决这个问题,其中最成功的是虚拟内存技术。 Linux支持虚拟内存,即用磁盘作为RAM的扩展,相当于扩大了可用内存。运行于Linux的程序只看到大量的可用内存,而不关心哪些在磁盘上。读写硬盘比读写内存慢(

5、大约为读写内存速度的千分之一),因而程序运行较慢。用于虚拟内存的硬盘空间称为交换空间。,Linux虚拟内存的实现需要6种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制和内存共享机制。,内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址。当用户程序运行时,如果发现程序需要的虚地址没有对应的物理内存,即发出请求页要求。如果有空闲的内存可供分配,就请求分配内存(用到内存的分配和回收),并把正在使用的物理页记录在缓存中(用到缓存机制)。如果没有足够的内存可供分配,则调用交换机制,腾出一部分内存。另外,在地址映射中要通过TLB(翻译后援存储器)寻找物理页;交换机

6、制中用到交换缓存,并且把物理页内容交换到交换文件中,也要修改页表来映射文件地址。Linux虚拟内存实现原理如图8-1所示。,图8-1 Linux虚拟内存实现原理,一般建议虚拟内存容量应当按物理内存的两倍进行分配。如果物理内存有256MB或更多时,可以缩小虚拟内存。Linux将把大量的内存用于Cache,在资源紧张时收回。只要看到swap为0,或该数很小即可放心,内存放着不用才是最大的浪费。,3内存泄漏和回收内存的方法 (1)内存泄漏的定义 通常所说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的、大小任意的(内存块的大小可以在程序运行期决定)、使用完后必须显示释放的内存。应用程序一般使用

7、malloc、realloc、new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块。否则,这块内存不能被再次使用,这时就说这块内存泄漏了。,(2)内存泄漏的危害 从用户使用程序的角度来看,内存泄漏本身不会产生什么危害。作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终耗尽系统所有的内存。从这个角度来说,一次性内存泄漏没有什么危害,因为它不会堆积。隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏,它更难被检测到。存在内存泄漏问题的程序除了会占用更多的内存外,还会使程序的性能急剧下降。对于服务器而言,如果出

8、现这种情况,即使系统不崩溃,也会严重影响使用。,(3)内存泄漏的检测和回收 编写指针比较多的复杂程序时,可能会遇到内存溢出之类的麻烦。在Linux或UNIX下,C和C+语言是最常使用的编程工具。但是,C+程序缺乏相应的手段来检测内存信息,只能用top指令观察进程的动态内存总额。而且程序退出时,无法获知任何内存泄漏信息。,4使用Linux命令回收内存 可以用ps、kill两个命令检测内存使用情况和进行回收。使用超级用户权限时,用命令“ps”可列出所有正在运行的程序名称和对应的进程号(PID)。kill命令的工作原理是向Linux操作系统的内核送出一个系统操作信号和程序的进程号(PID)。 以下例子说明如何用命令ps和参数v来高效率回收内存:,以下命令可以回收ping命令的内存: kill 9 2818,四、实验内容和步骤,1监控内存使用情况 用“free”命令监控内存使用情况: free free -b -s5 用vmstat命令监视虚拟内存使用情况: vmstat,2检查和回收内容 用命令ps列出所有正在运行的程序名称、对应的进程号(PID)等信息: ps v 用kill命令回收泄漏的内存: kill -9 ,五、实验总结,1写出实验报告。 2思考:什么是虚拟内存? 3思考:如何查看内存的使用情况? 4思考:回收内存的方法是什么?举例说明。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号