集群系统MOSIX分析(5)
2008-12-01 11:04:43 来源:WEB开发网进程内存状态:
task_struct的数据成员mm指向关于存储管理的struct mm_struct结构。它包含着进程内存管理的很多重要数据,如进程代码段、数据段、未初始化数据段、调用参数区和进程环境区的起始地址和结束地址,栈的起始地址和进程空间的大小。用户程序和代码一般占据虚拟地址空间的下方,这一部分是内存映射部分,其内容来自映射文件。界于用户执行映象和堆栈之间的部分是堆,在用户程序中动态申请的地址空间(如malloc)来源于堆。虚拟内存结构mm_struct中的start_brk和brk记录有关堆的信息。其中start_brk是用户虚拟地址空间初始化时,堆的终止位置;brk是当前堆的终止位置。
下面列出了struct mm_struct结构的一些重要成员:
struct mm_struct {
struct vm_area_struct * mmap; /* 指向VMA双向链表的指针*/
struct vm_area_struct * mmap_avl; /*指向VMA段AVL树的指针*/
struct vm_area_struct * mmap_cache; /*保存上次 find_vma 的结果 */
pgd_t * pgd; /*进程页目录的起始地址*/
atomic_t mm_users; /*用户空间的用户数 */
atomic_t mm_count; /* "struct mm_struct" 的引用计数 */
int map_count; /* VMAs的个数 */
unsigned long start_code, end_code, start_data, end_data;
unsigned long start_brk, brk, start_stack;
unsigned long arg_start, arg_end, env_start, env_end;
mm_context_t context; /* 体系结构相关的 MM上下文 */
struct rw_semaphore mmap_sem; /*读写信号量*/
};
更多精彩
赞助商链接