欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Linux内存管理机制.ppt

    • 资源ID:5437921       资源大小:1.08MB        全文页数:31页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux内存管理机制.ppt

    Linux操作系统精讲,大连理工大学软件学院 邱铁 综合楼413,Tel:0411-87571632E_mail:参考教材:Linux应用与开发典型实例精讲邱铁、于玉龙、徐子川编著.清华大学出版社.2010.5,第16章 内存管理,学习本章要达到的目标:结合操作系统原理课程,深入理解Linux系统物理内存管理机制;理解伙伴算法和Slab分配器的工作原理;熟悉操作系统提供的有关内存管理的内核函数;学会在Linux内核态下申请内存空间的方法。,16.1 关于Linux的内存管理,在Linux系统中对物理内存的管理主要涉及页面管理连续内存区管理非连续存储区管理,Linux物理内存管理方式,16.1.1 动态存储管理,一部分永久地分配给系统,作为内核代码段和只读数据段的载体,用来存放内核程序代码以及静态数据,这部分称为操作系统的静态存储器(static memory)。其它部分,则在Linux的管理下,进行内存的动态申请和释放,称为动态存储器(dynamic memory)。,16.1.2 页面管理,Linux采用页作为内存管理的基本单位,其采用的标准的页面大小为4KB因为4KB是大多数磁盘块大小的倍数,传输效率高,管理方便,无需考虑PSE,PAE,内核使用页描述符来跟踪管理物理内存,每个物理页面都用一个页描述符表示页描述符用struct page的结构描述,所有物理页面的描述符,组织在mem_map的数组中,page结构则是对物理页面进行描述的一个数据结构,mem_map数组与物理内存的对应关系,Linux采用著名的伙伴(Buddy)算法来解决内存碎片问题。伙伴算法把所有的空闲页面分为10个页块链表,每个链表中的一个块含有2的幂次个页面(叫做“页块”或简称“块”)实例具体分析参见教材Linux应用与开发典型实例精讲第256页,伙伴算法实例,16.1.3 slab分配模式,在Linux系统中所用到的对象如inode、task_struct等,经常会涉及到大量对象的重复生成、使用和释放问题。这些对象在生成时,所包括的成员属性值都赋成确定的数值,并且在使用完毕,释放结构前,属性又恢复为未使用前的状态。,Linux的slab内存分配模式的基本思想能够用合适的方法使得在对象前后两次被使用时,在同一块内存,或同一类内存空间,且保留了基本的数据结构,就可以大大提高效率。,16.2 Linux的内存管理函数,vmalloc()是内核可以用来分配连续虚存,但非连续物理内存的方法。kmalloc分配在物理上连续的内存,这些内存是实际上存在的,并且是连续的,根据 slab块进行分配。,16.3 实例训练与分析,在用户空间用valloc/malloc分配内存在内核空间用kmalloc/vmalloc分配内存,16.3.1 在用户空间用valloc/malloc分配内存,实现用valloc申请1MB内存单元程序退出时释放。,实例源码,#define A_MEGABYTE 1024*1024int main()char*some_memery;int megabyte=A_MEGABYTE;int exit_code=EXIT_FAILURE;some_memery=(char*)valloc(megabyte);/*申请内存*/if(some_memery!=NULL)sprintf(some_memery,Hello world!n);/*将字符串写入 some_memery 所 指向内存*/printf(%s,some_memery);free(some_memery);/*释放内存*/printf(memery is free!n);exit_code=EXIT_SUCCESS;exit(exit_code);,运行结果,16.3.2 在内核空间用kmalloc/vmalloc分配内存,编写mem_kv.c模块文件实现对实际内存与虚拟内存的分配:#define MEM_MALLOC_SIZE 4096/申请内存的大小#define MEM_MAJOR 252/主设备号#define MEM_MINOR_K 0/次设备号:实存#define MEM_MINOR_V 1/次设备号:虚存char*mem_spkm,*mem_spvm;/定义实存、虚存指针struct cdev*mem_cdev;,/*设备文件结构体选项*/struct file_operations mem_fops=.open=mem_open,/打开.release=mem_release,/释放.read=mem_read,/读操作.write=mem_write,/写操作;,将mem_spkm指向内核实际内存空间,将mem_spvm指向内核虚拟内存空间,并将其加载进内核设备文件系统中。,删除设备结构,将mem_spkm所指向的内核实际内存空间释放掉,将mem_spvm所指向内核虚拟内存空间释放掉。,编写mem_test.c文件 实例源码参见教材Linux应用与开发典型实例精讲第264页,读写的内存为用kmalloc()申请的实际内存,读写的内存为用vmalloc()申请的虚拟内存,思考与练习,1.在Linux操作系统中,页面管理、内存区管理、非连续存储区管理之间的关系是怎样的?2Linux操作系统对物理内存的管理方式有哪几种,各使用了什么算法?3动态存储管理有哪些优点?4Linux采用页面作为内存管理的基本单位,采用的标准的页面大小为4KB,为什么取此值?,思考与练习,5Linux解决内存碎片问题的伙伴算法的原理是什么?请举例说明。6Linux的slab内存分配模式的基本思想是什么?7Linux的内存管理函数kmalloc()和vmalloc()的区别有哪些?8以模块方式向Linux内核中申请一个长度为256字节的内存设备文件,并对其时行读写,如果超过申请的长度,会发生什么现象?,

    注意事项

    本文(Linux内存管理机制.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开