《实验九Linux内存管理.ppt》由会员分享,可在线阅读,更多相关《实验九Linux内存管理.ppt(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验九Linux内存管理 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望实验九 Linux内存管理v预备知识Linux内存管理Linux内存分配Linux内存回收v实验指导内存信息的监视内存的申请和释放v实验目的、内容1.1 Linux内存管理虚拟内存0 xBFFFFFFF0 xFFFFFFFF0 x00000000用户空间(对系统其他进程不可见)内核空间(所有进程及内核共享)固定映射区(4M)永久内存映射区(4M)动态内存映射区(min 120M)直接内存映射区
2、(max 896M)0 xC00000000 xFFFFFFFF连续区kmalloc()非连续区vmalloc()1.2 Linux内存管理虚拟内存的实现地址映射机制缓存和刷新机制请求页机制交换机制内存分配和回收机制1.2 Linux内存分配32位系统:64位系统:页目录页号页偏移量012 1122 2131线性地址页目录页表物理地址物理页3号控制寄存器页全局目录(PGD)页上级目录(PUD)页中间目录(PMD)页表(PT)物理块1.2 Linux内存分配常用的内存分配函数函数名函数名分配原理分配原理最大内存最大内存其他其他_get_free_pages直接对页框进行操作4MB适用于分配较大量
3、的连续物理内存kmem_cache_alloc基于slab机制实现128KB适合需要频繁申请释放相同大小内存块时使用kmalloc基于kmem_cache_alloc实现128KB最常见的分配方式,需要小于页框大小的内存时使用vmalloc建立非连续物理内存到虚拟地址的映射物理不连续,适合需要大内存,但对地址连续性没有要求的场合dma_alloc_coherent基于_alloc_pages实现4MB适用于DMA操作Ioremap实现已知物理地址到虚拟地址的映射适用于物理地址已知的场合,如设备驱动alloc_bootmem在启动kernel时,预留一段内存,内核看不见小于物理内存大小,内存管理
4、要求较高1.3 Linux内存回收v堆内存:程序从堆中分配的、大小任意的、使用完后必须显示释放的内存v堆内存的分配:malloc()、realloc()、new()v对内存的回收:free()、delete()v内存泄漏的堆积,会最终消耗尽系统所有的内存使用kill命令回收内存使用工具软件Memprof回收内存实验九 Linux内存管理v预备知识Linux内存管理Linux内存分配Linux内存回收v实验指导内存信息的监视内存的申请和释放v实验目的、内容2.1 内存信息的监视v用free命令监控内存使用情况v用vmstat命令监视虚拟内存使用情况2.2 内存的申请和释放v动态分配内存空间mal
5、loc()、calloc()malloc():一个参数,即要分配的内存空间大小calloc():两个参数,即元素数目和每个元素的大小malloc():不能初始化所分配的内存空间calloc():初始化为零v释放原先申请的内存空间free()释放内存后,不能再去访问被释放的内存空间 不能两次释放相同的指针 C语言中,malloc/free 需配套使用实验九 Linux内存管理v预备知识Linux内存管理Linux内存分配Linux内存回收v实验指导内存信息的监视内存的申请和释放v实验目的、内容3.1 实验目的v掌握Linux虚拟内存管理的原理v掌握Linux中动态内存操作函数的使用方法v掌握Linux监测内存使用情况的方法3.2 实验内容v利用系统提供的内存操作函数进行内存的申请、使用和释放v利用系统提供的内存操作函数进行内存的申请、调整、使用和释放v利用free和vmstat命令观察主存分配结果及使用情况