LINUX 系统调用 mlock 的代码分析
LINUX系统调用 mlock的代码分析
林才学(9811533)
(本组其他成员:李颖、满世杰、陈晋大)
1999-5-20
1
LINUX 系统调用 mlock 的代码分析
目录
一、 LINUX 内存管理简介1
1.1.LINUX 的分页管理机制1
1.2.虚存段(vma )的组织和管理3
1.3 内存的共享和保护3
二、 MLOCK 系统调用简介5
2.1 mlock 介绍 5
2.2 mlock 所用到的主要数据结构和重要常量6
三、 MLOCK 系统调用代码分析9
3.1 mlock 系统调用结构和各个子函数结构、功能以及示意图。9
3.2 mlock 系统流程及其它重要子函数程序流程15
3.3 核心态内存的申请与释放22
四、 MLOCK 系统调用与 MUNLOCK 、MLOCKALL 、MUNLOCKALL 的关系33
五、 关键技术34
六、 结束语35
2
LINUX 系统调用 mlock 的代码分析
一、 LINUX 内存管理简介
1.1.LINUX 的分页管理机制
在 LINUX 中,每一个用户进程都可以访问 4GB 的线性虚拟内存空间。其中从 0 到 3GB
的虚拟内存地址是用户空间,用户进程可以直接对其进行访问。从 3GB 到 4GB 的虚拟内存
地址为核心空间,存放仅供核心态访问的代码和数据,用户进程不可访问。当用户进程通过
中断或系统调用对其访问时,就会触发处理器的特权级转换(从处理器的特权级 3 切换到特
权级 0 ),即从操作系统的用户态切换到核心态。
所有进程从 3GB 到 4GB 的虚拟空间映像都是一样的,LINUX 以此方式让核心态进程
共享代码段和数据段。
核心态虚拟空间从 3GB 到 3G