Linux2.6用户空间堆栈区的分配与回收
2012-04-30 21:12
239 查看
1.sys_brk(新边界的线性地址)
(1)地址检查,地址不低于代码段的终点
(2)与页面大小对齐
(3)新地址 < 老边界 -----> 释放空间(见2)
新地址 > 老边界 -----> 申请空间(见8)
2.释放空间
(1)线性地址 -> 区间地址
(2)预备一个新的区间结构(回收一个区间的一部分,可能导致一个区间变成两个区间)
(3)把所有涉及到的区间移到一个临时队列
(4)解除映射,释放页面(见3)
(5)对vm_area_struct和mm_struct作出调整
(6)释放页面表
3.依次处理PGD中所有的页目录项所指向的页目录表,处理方法(见4)
4.依次处理页目录表中的所有页面项所指向的页面,处理方法(见5)
5.释放某一页面
(1)将页面的页面表项清0
(2)解除内存页面及盘上页面的使用(见6)
6.解除内存页面及盘上页面的使用
(1)若页面在内存中且为脏,则移入脏队列
(2)若页面在内存中,则解除对内存页面的使用(见7)
(3)解除对“交换设备”盘上页面的使用
7.解除对内存页面的使用
(1)将页面从换入/掏出队列中脱离
(2)将页面从某个LRU队列中脱离
(3)将队列从杂凑队列中脱离
(4)释放页面
8.申请空间
(1)权限检查,越界检查,冲突检查,各种检查
(2)申请一个新的区间,如果能合并,就合并
(3)为新区间建立起对内存的映射
(1)地址检查,地址不低于代码段的终点
(2)与页面大小对齐
(3)新地址 < 老边界 -----> 释放空间(见2)
新地址 > 老边界 -----> 申请空间(见8)
2.释放空间
(1)线性地址 -> 区间地址
(2)预备一个新的区间结构(回收一个区间的一部分,可能导致一个区间变成两个区间)
(3)把所有涉及到的区间移到一个临时队列
(4)解除映射,释放页面(见3)
(5)对vm_area_struct和mm_struct作出调整
(6)释放页面表
3.依次处理PGD中所有的页目录项所指向的页目录表,处理方法(见4)
4.依次处理页目录表中的所有页面项所指向的页面,处理方法(见5)
5.释放某一页面
(1)将页面的页面表项清0
(2)解除内存页面及盘上页面的使用(见6)
6.解除内存页面及盘上页面的使用
(1)若页面在内存中且为脏,则移入脏队列
(2)若页面在内存中,则解除对内存页面的使用(见7)
(3)解除对“交换设备”盘上页面的使用
7.解除对内存页面的使用
(1)将页面从换入/掏出队列中脱离
(2)将页面从某个LRU队列中脱离
(3)将队列从杂凑队列中脱离
(4)释放页面
8.申请空间
(1)权限检查,越界检查,冲突检查,各种检查
(2)申请一个新的区间,如果能合并,就合并
(3)为新区间建立起对内存的映射
相关文章推荐
- Linux2.6用户空间堆栈区的分配与回收
- LINUX2.6内核中用户空间向驱动程序传递的内存大小最大为多少?
- linux 用户进程额堆栈空间VMA
- Linux2.6-4G的线性地址空间的分配与使用
- linux底层内存管理--用户空间的分级分配系统以及懒惰的含义
- Linux 回收用户空间资源
- Linux2.6-4G的线性地址空间的分配与使用
- linux底层内存管理--用户空间的分级分配系统以及懒惰的含义
- linux底层内存管理--用户空间的分级分配系统以及懒惰的含义
- Linux零碎记录之ulimit【堆栈大小、stack size、进程数限制、文件句柄限制、linux用户空间限制】
- Linux2.6-4G的线性地址空间的分配与使用
- Linux内核空间和用户空间详解
- 实验四 主存空间的分配和回收模拟
- Linux内存点滴 用户进程内存空间
- linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent_helper
- Linux2.6为数据结构分配内存-slab
- Linux用户空间与内核空间
- linux 用户空间与内核空间——高端内存详解
- Linux 2.6 中的页面回收与反向映射
- 操作系统-c语言实现空闲块表的存储空间的分配和回收