实验8Linux内存管理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验8Linux内存管理

实验8 Linux的内存管理 ;一、实验目的;二、实验工具与设备;三、实验预备知识;1.实时监控内存使用情况 (1)在命令行用“free”命令监控内存使用情况 在提示符后输入命令free:#free 表8-1所示为输出情况。;; 表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所示信息。;procs; vmstat命令是一个通用监控程序,是Virtual Memory Statistics(虚拟内存统计)的缩写。如果vmstat命令没有带任何命令行参数,将得到一次性的报告。 vmstat命令报告主要的活动类型有进程(procs)、内存(以千字节为单位)、交换分区(以千字节为单位)、来自块设备(硬盘驱动器)的输入输出量、系统中断(每秒钟发生的次数),以及中央处理单元(CPU)分配给用户、系统和空闲时分别占用的比例。 ;2.虚拟内存实现的机制 由于人们需要的内存容量远远大于物理内存容量,因而有各种策略来解决这个问题,其中最成功的是虚拟内存技术。 Linux支持虚拟内存,即用磁盘作为RAM的扩展,相当于扩大了可用内存。运行于Linux的程序只看到大量的可用内存,而不关心哪些在磁盘上。读写硬盘比读写内存慢(大约为读写内存速度的千分之一),因而程序运行较慢。用于虚拟内存的硬盘空间称为交换空间。; Linux虚拟内存的实现需要6种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制和内存共享机制。 ; 内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址。当用户程序运行时,如果发现程序需要的虚地址没有对应的物理内存,即发出请求页要求。如果有空闲的内存可供分配,就请求分配内存(用到内存的分配和回收),并把正在使用的物理页记录在缓存中(用到缓存机制)。如果没有足够的内存可供分配,则调用交换机制,腾出一部分内存。另外,在地址映射中要通过TLB(翻译后援存储器)寻找物理页;交换机制中用到交换缓存,并且把物理页内容交换到交换文件中,也要修改页表来映射文件地址。Linux虚拟内存实现原理如图8-1所示。;图8-1 Linux虚拟内存实现原理 ; 一般建议虚拟内存容量应当按物理内存的两倍进行分配。如果物理内存有256MB或更多时,可以缩小虚拟内存。Linux将把大量的内存用于Cache,在资源紧张时收回。只要看到swap为0,或该数很小即可放心,内存放着不用才是最大的浪费。;3.内存泄漏和回收内存的方法 (1)内存泄漏的定义 通常所说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的、大小任意的(内存块的大小可以在程序运行期决定)、使用完后必须显示释放的内存。应用程序一般使用malloc、realloc、new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块。否则,这块内存不能被再次使用,这时就说这块内存泄漏了。;(2)内存泄漏的危害 从用户使用程序的角度来看,内存泄漏本身不会产生什么危害。作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终耗尽系统所有的内存。从这个角度来说,一次性内存泄漏没有什么危害,因为它不会堆积。隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏,它更难被检测到。存在内存泄漏问题的程序除了会占用更多的内存外,还会使程序的性能急剧下降。对于服务器而言,如果出现这种情况,即使系统不崩溃,也会严重影响使用。;(3)内存泄漏的检测和回收 编写指针比较多的复杂程序时,可能会遇到内存溢出之类的麻烦。在Linux或UNIX下,C和C++语言是最常使用的编程工具。但是,C++程序缺乏相应的手段来检测内存信息,只能用top指令观察进程的动态内存总额。而且程序退出时,无法获知任何内存泄漏信息。;4.使用Linux命令回收内存 可以用ps、kill两个命令检测内存使用情况和进行

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档