一.整体把握
ELF loader 分为内核空间Loader 和用户空间Linker
loader负责加载segement, linker负责重定位和链接动态库
Program Loading 流程:
1. 在Shell 模式下执行外部程序
2. Shell以 fork + exec 方式执行外部程序
3. 通过Int 0x80 中断 调用kernel的exec<sys_execvp> 系统调用服务
Kernel Space loader:
4. Exec调用Program Loader(ELF loader), 将ELF image 载入
5. Program Loader 找到PT_INTERP segment
6. Program Loader将PT_LOAD segment mapping为text/data segment。text segment 由vadder 0x08048000开始,data segment 紧接其后
7. Program loader 调用 interpreter loader 将 program interpreter (ld.so)载入,并且mapping到进程内存空间中;interpreter