struct mm_struct {
/*
指向线性区对象的链表头
*/
struct vm_area_struct *mmap;
/*
指向线性区对象的红-黑树
*/
struct rb_root mm_rb;
/*
指向最后一个引用的线性区对象
*/
struct vm_area_struct *mmap_cache;
/*
在进程地址空间中搜索有效线性地址区间的方法
*/
unsigned long (*get_unmapped_area)(struct file *filp,
unsigned long addr,unsigned long len,
unsigned long pgoff,unsigned long flags);
/*
释放线性区时调用的方法
*/
void (*unmap_area)(struct mm_struct *mm,unsigned long addr);
/*
标识第一个分配的匿名线性区或者是文件内存映射的线性地址
*/
unsigned long mmap_base;
/*
*/
unsigned long task_size;
unsigned long cache_hole_size;
/*
内核从这个地址开始搜索进程地址空间中线性地址的空闲区间
*/
unsigned long free_area_cache;
/*
指向页全局目录
*/
pgd_t *pgd;
/*
存放共享mm_struct数据结构的轻量级进程的个数
*/
atomic_t mm_users;
/*
内存描述符的主使用计数器,每次mm_count递减时,内核都要检查它是否变为0,如
果是,就要解除这个内存描述符,因为不再有用户使用它
*/
atomic_t mm_count;
/*
线性区的个数
*/
int map_count;
/*
*/
struct rw_semaphore mmap_sem;
/*
线性区的自旋锁和页表的自旋锁
*/
spinlock_t page_table_lock;
/*
存放链表相邻元素的地址,第一个元素是init_mm的mm_list字段
*/
struct list_head mmlist;
mm_counter_t _file_rss;
mm_counter_t _anon_rss;
/*
进程所拥有的最大页框数
*/
unsigned long hiwater_rss;
/*
进程线性区中的最大页数
*/
unsigned long hiwater_vm;
/*
进程地址空间的大小,"锁住"而不能换出的页的个数,共享文件内存映射中的页数,
可执行内存映射中的页数
*/
unsigned long total_vm,locked_vm,shared_vm,exec_vm;
/*
用户态堆栈中的页数,在保留区中的页数或者是在特殊线性区中的页数,线性区默认
的访问标志,this进程的页表数
*/
unsigned long stack_vm,reserved_vm,def_flags,nr_ptes;
/*
可执行代码开始地址,结束地址,已初始化数据的开始地址,结束地址
*/
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;
/*
开始执行ELF程序时会使用到saved_auxv参数
*/
unsigned long saved_auxv[AT_VECTOR_SIZE];
/*
用于懒惰TLB交换的位掩码
*/
cpumask_t cpu_vm_mask;
/*
指向有关特定体系结构信息的表
*/
mm_context_t context;
/*
*/
unsigned int faultstamp;
/*
*/
unsigned int token_priority;
/*
*/
unsigned int last_interval;
/*
线性区默认的访问标志(访问设置相关位的时候,必须使用原子操作来解决)
*/
unsigned long flags;
/*
正在把进程地址空间的内容卸载到转储文件中的轻量级进程的数量
*/
int core_waiters;
/*
指向创建内存转储文件时的补充原语
*/
struct completion *core_startup_done,core_done;
/*
用于异步I/O上下文链表的锁
*/
rwlock_t ioctx_list_lock;
/*
异步I/O上下文链表
*/
struct kioctx *ioctx_list;
};
阅读(1566) | 评论(0) | 转发(0) |