/* * */ struct mm_struct { struct vm_area_struct *mmap; /* 内存区域链表 */ struct rb_root mm_rb; /* 虚拟内存区域红黑树 */ struct vm_area_struct *mmap_cache; /* 最后使用内存区域 */ unsigned long free_area_cache; /* 第一个地址空间洞 */ pgd_t *pgd; /* 页全局目录 */ atomic_t mm_users; /* 该地址空间用户 */ atomic_t mm_count; /* 主使用记数 */ int map_count; /* 内存区域数目 */ struct rw_semaphore mmap_sem; /* 内存区域信号量 */ spinlock_t page_table_lock; /* 页表锁 */ struct list_head mmlist; /* 包含全部mm_structs的链表 */ unsigned long start_code; /* 代码段开始地址 */ unsigned long end_code; /* 代码段的结束地址 */ unsigned long start_data; /* 数据段首地址 */ unsigned long end_data; /* 数据段尾地址 */ unsigned long start_brk; /* 堆首地址 */ unsigned long brk; /* 堆尾地址 */ unsigned long start_stack; /* 进程栈的首地址 */ unsigned long arg_start; /* 命令行参数的首地址 */ unsigned long arg_end; /* 命令行参数的尾地址 */ unsigned long env_start; /* 环境变量首地址 */ unsigned long env_end; /* 环境变量尾地址 */ unsigned long rss; /* 所分配的物理页 */ unsigned long total_vm; /* 全部页面数目 */ unsigned long locked_vm; /* 默认访问标志 */ unsigned long cpu_vm_mask; /* 懒惰(lazy)TLB交换掩码 */ unsigned long swap_address; /* 最后被扫描地址 */ unsigned dumpable:1; /* 是否可以产生内存信息转储? */ int used_hugetlb; /* 是否使用了hugetlb ? */ mm_context_t context; /* 体系结构特殊数据 */ int core_waiters; /* 内核转储等待线程 */ struct completion *core_startup_done; /* core开始完成 */ struct completion core_done; /* core结束完成 */ rwlock_t ioctx_list_lock; /* AIO I/O链表锁 */ struct kioctx *ioctx_list; /* AIO I/O链表*/ struct kioctx default_kioctx; /* AIO 默认 I/O 上下文t */ }; /* *vm_area_struct结构体描述了指定地址空间内连续区间上的一个独立内存范围 *定义文件在linux/mm.h中 */ struct vm_area_struct { struct mm_struct *vm_mm; /* 相关的mm_struct结构体 */ unsigned long vm_start; /* 区间首地址 */ unsigned long vm_end; /* 区间尾地址 */ struct vm_area_struct *vm_next; /* VMA链表 */ pgprot_t vm_page_prot; /* 访问控制权限 */ unsigned long vm_flags; /* 标志 */ struct rb_node vm_rb; /* 树上该VMA的节点 */ union { /* 或者是关联于address_space->i_mmap字段,或者是关联于i_mmap_nonlinear字段 */ struct { struct list_head list; void *parent; struct vm_area_struct *head; } vm_set; struct prio_tree_node prio_tree_node; } shared; struct list_head anon_vma_node; /* anon_vma目录项 */ struct anon_vma *anon_vma; /* 匿名的VMA对象 */ struct vm_operations_struct *vm_ops; /* 相关的操作表 */ unsigned long vm_pgoff; /* 文件中的偏移量 */ struct file *vm_file; /* 被映射的文件(假如存在) */ void *vm_private_data; /* 私有数据 */ }; |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-29 23:28 , Processed in 0.144275 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.