Linux下的可执行文件格式ELF

磁盘中的ELF(可执行文件)与内存中的ELF(进程内存映像)
磁盘中可读写(RW)的.data、.bss、.got .pit对应内存中的Data段
磁盘中可读执行(RX)的.rodata、.text、init、ELF Header对应内存中的Code(Text)段

不同的section由于读写执行权限相同被合并成segment,这个操作由Linker完成
而磁盘中的静态文件变为内存中的进程映像,是由os来完成映射的

进程虚拟地址空间

地址以字节编码,常以16进制表示

虚拟内存用户空间每个进程一份
虚拟内存内核空间所有进程共享一份
虚拟内存 mmap 段中的动态链接库仅在物理内存中装载一份,例:glibc(虽然在虚拟内存中被多次载入)

每个进程都会分到4GB的虚拟内存(因为32位的寻址限制),而其中1GB是共享的内核空间(Kernel),剩下的3GB为用户空间

拥有相同读写执行权限的不同section由Linker合并成为一个segment,接着从磁盘中的静态文件由os完成映射成为一个进程映像

//硬件读取物理内存,而程序员看的是由os转化物理内存成为的虚拟内存(虚拟地址空间)