Linux内存管理机制.ppt
《Linux内存管理机制.ppt》由会员分享,可在线阅读,更多相关《Linux内存管理机制.ppt(31页珍藏版)》请在三一办公上搜索。
1、Linux操作系统精讲,大连理工大学软件学院 邱铁 综合楼413,Tel:0411-87571632E_mail:参考教材:Linux应用与开发典型实例精讲邱铁、于玉龙、徐子川编著.清华大学出版社.2010.5,第16章 内存管理,学习本章要达到的目标:结合操作系统原理课程,深入理解Linux系统物理内存管理机制;理解伙伴算法和Slab分配器的工作原理;熟悉操作系统提供的有关内存管理的内核函数;学会在Linux内核态下申请内存空间的方法。,16.1 关于Linux的内存管理,在Linux系统中对物理内存的管理主要涉及页面管理连续内存区管理非连续存储区管理,Linux物理内存管理方式,16.1.
2、1 动态存储管理,一部分永久地分配给系统,作为内核代码段和只读数据段的载体,用来存放内核程序代码以及静态数据,这部分称为操作系统的静态存储器(static memory)。其它部分,则在Linux的管理下,进行内存的动态申请和释放,称为动态存储器(dynamic memory)。,16.1.2 页面管理,Linux采用页作为内存管理的基本单位,其采用的标准的页面大小为4KB因为4KB是大多数磁盘块大小的倍数,传输效率高,管理方便,无需考虑PSE,PAE,内核使用页描述符来跟踪管理物理内存,每个物理页面都用一个页描述符表示页描述符用struct page的结构描述,所有物理页面的描述符,组织在m
3、em_map的数组中,page结构则是对物理页面进行描述的一个数据结构,mem_map数组与物理内存的对应关系,Linux采用著名的伙伴(Buddy)算法来解决内存碎片问题。伙伴算法把所有的空闲页面分为10个页块链表,每个链表中的一个块含有2的幂次个页面(叫做“页块”或简称“块”)实例具体分析参见教材Linux应用与开发典型实例精讲第256页,伙伴算法实例,16.1.3 slab分配模式,在Linux系统中所用到的对象如inode、task_struct等,经常会涉及到大量对象的重复生成、使用和释放问题。这些对象在生成时,所包括的成员属性值都赋成确定的数值,并且在使用完毕,释放结构前,属性又恢
4、复为未使用前的状态。,Linux的slab内存分配模式的基本思想能够用合适的方法使得在对象前后两次被使用时,在同一块内存,或同一类内存空间,且保留了基本的数据结构,就可以大大提高效率。,16.2 Linux的内存管理函数,vmalloc()是内核可以用来分配连续虚存,但非连续物理内存的方法。kmalloc分配在物理上连续的内存,这些内存是实际上存在的,并且是连续的,根据 slab块进行分配。,16.3 实例训练与分析,在用户空间用valloc/malloc分配内存在内核空间用kmalloc/vmalloc分配内存,16.3.1 在用户空间用valloc/malloc分配内存,实现用valloc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 内存 管理机制

链接地址:https://www.31ppt.com/p-5437921.html