动态存储器 ·内核如何给自己分配动态存储器 。页框管理 ©小内存管理 ©非连续存储区管理 1口4四1是4P在刀0C 陈香兰(x1 anchenoustc,edu,cn)(计算丸应【inux操作系统分新Chapter8内存管理 0 ctober31.20145/47
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 动态存储器 内核如何给自己分配动态存储器 1. 页框管理 2. 小内存管理 3. 非连续存储区管理 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 8 内存管理 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 31, 2014 5 / 47
Outline 页框管理:页面级分配器 ·页框和页描述符 ●存储区(Memory Zones) ●页面级分配器接口 ●页框管理算法:伙伴算法 内存区管理(memory area) 非连续存储区管理 @小结和作业 1口t4四1是42刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应【inux操作系统分斯Chapter8内存管理 0 ctober31.20146/47
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline . 1. 页框管理:页面级分配器 页框和页描述符 存储区(Memory Zones) 页面级分配器接口 页框管理算法:伙伴算法 .2 内存区管理(memory area) .3 非连续存储区管理 4. 小结和作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 8 内存管理 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 31, 2014 6 / 47
Outline 页框管理:页面级分配器 。页框和页描述符 。存储区(Memory Zones 。页面级分配器接口 。页框管理算法:伙伴算法 @内存区管理(memory area) 。slab分配器 非连续存储区管理 小结和作业 1口t4四1是42刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux操作系统分斯Chapter8内存管理 0 ctober31.20147/47
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline . 1. 页框管理:页面级分配器 页框和页描述符 存储区(Memory Zones) 页面级分配器接口 页框管理算法:伙伴算法 .2 内存区管理(memory area) slab分配器 .3 非连续存储区管理 4. 小结和作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 8 内存管理 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 31, 2014 7 / 47
页框管理 ●Linux采用页作为内存管理的基本单位 ●Linux采用的标准的页框大小为4KB ·由分页单元引发的缺页异常很容易得到解释 ·4KB是大多数磁盘块大小的倍数 。传输效率高 ●管理方便 /PAGE_SHIFT determines the page size * #define PAGE SHIFT 12 #define PAGE SIZE (AC(1,UL)<<PAGE SHIFT) #define PAGE MASK ((PAGE SIZE-1)) ●例如:512M的物理内存对应于???个页框? 1口4四1是4P刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应【nux操作系统分折Chapter8内存管理 0 ctober31.20148/47
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 页框管理 Linux采用页作为内存管理的基本单位 Linux采用的标准的页框大小为4KB 由分页单元引发的缺页异常很容易得到解释 4KB是大多数磁盘块大小的倍数 传输效率高 管理方便 . . /* PAGE_SHIFT determines the page size */ #define PAGE_SHIFT 12 #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) #define PAGE_MASK (~(PAGE_SIZE-1)) 例如:512M的物理内存对应于???个页框? 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 8 内存管理 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 31, 2014 8 / 47
页框管理 ·内核必须记录每个页框的当前状态 ·哪些属于进程,哪些存放了内核代码/数据 ·对于动态存储器中的页框:是否空闲,即是否可用 。如果一个页框不可用,内核需要知道是谁在用这个页框 ·用户态进程、动态分配的内核数据结构、静态的内核代码、 页面cache、设备驱动程序缓冲的数据等等 1口+4四1是4P在刀0C 陈香兰(xianchenoustc,edu,cn)(升算丸应Linux操件系统分折Chapter8内存管理 0 ctober31.20148/47
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 页框管理 内核必须记录每个页框的当前状态 哪些属于进程,哪些存放了内核代码/数据 对于动态存储器中的页框:是否空闲,即是否可用 如果一个页框不可用,内核需要知道是谁在用这个页框 用户态进程、动态分配的内核数据结构、静态的内核代码、 页面cache、设备驱动程序缓冲的数据等等 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 8 内存管理 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 31, 2014 8 / 47