程序装载与虚拟内存

Linux下可执行文件格式ELF

磁盘中的ELF(可执行文件)与内存中的ELF(进程内存映像)

 

ELF文件到虚拟地址空间的映射

 

 

进程虚拟地址空间

地址以字节编码 虚拟内存用户空间每个进程一份

1Byte=8bits

常以16进制表示 虚拟内存内核空间所有进程共享一份

0x3c = 0011 1100(B) 虚拟内存mmap段中的动态链接库仅在物理内存中装载一份

32位的进程虚拟地址空间

 

64位的进程虚拟地址空间

 

 

段与节

代码段(Text segment)包含了代码与只读数据

.txt节

.rodata节

.hash节

.dynsym节

.dynstr节

.plt节

.rel.got节

...

数据段(Data segment)包含了可读可写数据

.data节

.dynamic节

.got节

.got.plt节

.bss节

...

栈段(Stack segment)

  • 一个段包含多个节

  • 段视图用于进程的内存区域的rwx权限划分

  • 节视图用于ELF文件编译链接时与在磁盘上存储时的文件结构的组织



posted @ 2022-01-17 22:18  vi0let  阅读(50)  评论(0编辑  收藏  举报