当前位置:  技术问答>linux和unix

vm_area_struct初始化赋值问题?

    来源: 互联网  发布时间:2016-05-19

    本文导语:  当可执行映象映射到进程的虚拟地址空间时,将产生一组 vm_area_struct 结构来描述虚拟内存区间的起始点和终止点,每个 vm_area_struct 结构代表可执行映象的一部分,可能是可执行代码,也可能是初始化的变量或未初...

当可执行映象映射到进程的虚拟地址空间时,将产生一组 vm_area_struct 结构来描述虚拟内存区间的起始点和终止点,每个 vm_area_struct 结构代表可执行映象的一部分,可能是可执行代码,也可能是初始化的变量或未初始化的数据

我想请教大家的是,假如我的可执行映象中有一个代码段(地址范围为0X00001000h 到 0X00002000h),有一个vm_area_struct 结构映射这个代码段,那么这个vm_area_struct的vm_start和vm_end的值是不是就会分别赋值为0X00001000h 和 0X00002000h?  另外如果是这样赋值的,那么这个赋值是什么时候进行的,我在有的书上看到vm_area_struct好像开始是拷贝父进程的值,也不知道vm_area_struc以后会在什么时候改?

希望大家能够指点一下,小弟不胜感激!!!

|

进程的虚拟内存区间
代码段 --数据段--bss段--动态分配区间--堆栈段--0xc0000000内核区
在每个进程的mm_struct结构中,
unsigned long start_code, end_code, start_data, end_data;
这些成分指明了代码段和数据段的起始地址。

你可以通过mmap,mmap_avl,mmap_cache这几个变量把进程的vm_area_struct的start、end值都打印出来。
在我的印象中,堆栈段肯定站一个vm_area_struct,在malloc动态分配内存时,会新产生vm_area_struct,

vm_area_struct在加载代码时初始化,在之后动态分配时,有合并也有删除。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • vm_area_struct什么情况下存在被映射的文件?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3