Linux sys_exec中可执行文件映射的建立及读取(6)
elf文件段属性和vm_area_struct关系:
在elf文件段中,有如下属性:
1. p_type:该成员指出了这个数组的元素描述了什么类型的段,或怎样解释该数组元素的信息。
2. p_offset:该成员给出了该段的驻留位置相对于文件开始处的偏移。
3. p_vaddr:该成员给出了该段在内存中的首字节地址。
4. p_filesz:该成员给出了文件映像中该段的字节数;它可能是 0 。
5. p_memsz:该成员给出了内存映像中该段的字节数;它可能是 0 。
6. p_flags:该成员给出了和该段相关的标志。定义的标志值如下所述。
7. p_align:就象在后面“载入程序”部分中所说的那样,可载入的进程段必须有合适的p_vaddr 、 p_offset 值,取页面大小的模。该成员给出了该段在内存和文件中排列值。 0 和 1 表示不需要排列。否则, p_align 必须为正的 2 的幂,并且 p_vaddr 应当等于 p_offset 模 p_align 。
那么vm_area_struct中相应的成员和elf文件段属性的关系为:
1. vm_start ---> p_vaddr :该vm_area_struct对应的用户空间区间起始逻辑地址;
2. vm_end ---> p_vaddr+p_filesz :该vm_area_struct对应的用户空间区间结束逻辑地址;
3. vm_pgoff ---> p_offset:该vm_area_struct对应的实际数据首字节在文件中的偏移地址;
文章来源CU社区:Linux sys_exec中可执行文件映射的建立及读取
相关文章