Linux 内存管理 综合实验报告
计算机与通信学院
Linux 内存管理
综合实验报告
指导老师:孙建华
组员 :夏槟 20040810720
段翼真 20040810503
米晓亮 20040810713
2008 年 1 月 3 日
1 Linux内存管理综合实验简介3
1.1 综合设计题目3
1.2 综合设计小组成员3
1.3 小组成员任务分配情况及每人所占工作比例3
2 Linux 内存管理概述4
2.1 Linux虚拟内存的实现结构 4
2.2 内核空间和用户空间5
2.3 虚拟内存实现机制间的关系7
3 系统调用功能描述8
3.1 do_page_fault()系统调用功能描述 8
3.2 brk()系统调用功能描述8
3.3mmap()系统调用功能描述8
4 数据结构分析8
4.1 数据结构示意图9
4.2 Struct mm9
4.3 Struct vma 11
4.4 红黑树12
5 系统调用代码分析13
5.1 do_page_fault()系统调用分析 13
5.1.1 有关常量及相关错误定义15
5.1.2 代码分析15
5.1.3 流程图21
5.2 brk()系统调用分析21
5.2.1 有关常量及相关错误定义23
5.2.2 代码分析23
5.2.3 流程图40
5.3 mmap()系统调用分析40
5.3.1 有关常量及相关错误定义42
5.3.2 代码分析43
5.3.3 流程图56
6 心得体会62
参考文献63
相关工具63
1 Linux 内存管理综合实验简介
1.1 综合设计题目
系统调用do_page_fault()、brk() 、mmap() 的调用流程,涉及到的主要数据结构,写出
代码分析结果,并画出流程图来表示相关函数之间的相互调用关系。
1.2 综合设计小组成员
段翼真(20040810503 ) 米晓亮 夏槟(20040810720 )
1.3 小组成员任务分配情况及每人所占工作比例
段翼真负责 do_page_fault()系统调用的分析,写出代码分析结果,并画出流程图来表示
相关函数之间的相互调用关系。所占工作比例 30 %。
米晓亮负责 brk()系统调用的分析,写出代码分析结果,并画出流程图来表示相关函数
之间的相互调用关系。所占工作比例 30 %。
夏槟负责mmap()调用的分析写出代码分析结果,并画出流程图来表示相关函数之间的
相互调用关系。并完成论文的整理书写。所占工作比例 40 %。
2 Linux 内存管理概述
Linux 是为多用户多任务设计的操作系统, 所以存储资源要被多个进程有效共享;且由
于程序规模的不断膨胀,要求的内存空间比从前大得多。 Linux 内存管理的设计充分利用
了计算机系统所提供的虚拟存储技术,真正实现了虚拟存储器管理。
由于I386 具有代表性和普遍性,我们选择了 Intel386 的段机制和页机制作为 Linux 虚
拟存储管理的硬件平台。
Linux 的内存管理主要体现在对虚拟内存的管理。我们可以把Linux 虚拟内存管理功能
概括为以下几点:
·大地址空间
·进程保护
·内存映射
·公平的物理内存分配