//start_code 可执行代码的起始地址 //end_code 可执行代码的最后地址 //start_data已初始化数据的起始地址 // end_data已初始化数据的最后地址 unsigned long start_brk, brk, start_stack; //start_stack堆的起始位置 //brk堆的当前的最后地址 //用户堆栈的起始地址 unsigned long arg_start, arg_end, ...
unsingned long start_code,end_code,start_data,end_data; //代码段的开始start_code ,结束end_code,数据段的开始start_data,结束end_data unsigned long start_brk,brk,start_stack; //start_brk和brk记录有关堆的信息,start_brk是用户虚拟地址空间初始化,brk是当前堆的结束地址,start_stack是栈的起始地址 ...
命令行参数的起始地址61//env_start环境变量的起始地址62//env_end环境变量的最后地址6364unsigned long saved_auxv[AT_VECTOR_SIZE];/* for /proc/PID/auxv */6566struct linux_binfmt*binfmt;6768cpumask_t cpu_vm_mask;//用于惰性TLB交换的位掩码69/* Architecture-specific MM context */70mm_context_t...
449staticstructmm_struct * mm_init(structmm_struct * mm,structtask_struct *p)450{451atomic_set(&mm->mm_users,1);452atomic_set(&mm->mm_count,1); 在初始化一个mm实例的时候,mm_users和mm_count都被初始化为1。 2994/*2995 * context_switch - switch to the new MM and the new 2996 * ...
在保留区中的页数或者在特殊线性区中的页数44//def_flags 线性区默认的访问标志45//nr_ptes 进程的页表数4647unsignedlongstart_code, end_code, start_data, end_data;48//start_code 可执行代码的起始地址49//end_code 可执行代码的最后地址50//start_data已初始化数据的起始地址51//end_data已初始化数据...
[start_stack,end_stack)是用来维护stack段空间范围。mmap_base是维护共享映射区的起始地址。bss段表示的是所有的未初始化的全局变量,为了效率,对处在bss段的变量,将它们匿名映射到“零页”,这样提高了程序的加载效率。 //指向线性区对象的链表头 struct vm_area_struct * mmap; /* list of VMAs */...
unsigned long start_brk, brk, start_stack; /*start_brk 和brk记录有关堆的信息, start_brk是用户虚拟地址空间初始化时,堆的结束地址, brk 是当前堆的结束地址, start_stack 是栈的起始地址*/ unsigned long arg_start, arg_end, env_start, env_end; /*arg_start 参数段的起始地址, arg_end 参数段...
④ 动态库 代码段 , 数据段 , 未初始化数据段 ; ⑤堆内存 :通过mallocbrkvmalloc等函数 申请的 动态分配 的内存 ; ⑥栈内存 :存放 局部变量 和 函数调用栈 ; ⑦内存映射区 :将 文件 通过mmap函数 映射到 " 虚拟地址空间 " 的 " 内存映射区 " ; ...
*/ struct vm_area_struct *mmap; /* 指向线性区对象的红-黑树 */ struct rb_root mm_rb; /* 指向最后一个引用的线性区对象 */ struct vm_area_struct *mmap_cache; /* 在进程地址空间中搜索有效线性地址区间的方法 */ unsigned long (*get_unmapped_area)(struct file *filp, ...
mm_struct 定义在include/linux/mm_types.h 中,其中的域抽象了进程的地址空间,如下图所⽰: 1 2 3 4 5 6 7 891011121314151617181920212223242526272829303132struct mm_struct { struct vm_area_struct * mmap; //指向虚拟区间(VMA)的链表 struct rb_root mm_rb; //指向线性区对象红⿊树的根 st...