Chapter 06
第六章讲的是装载过程,主要就是操作系统干的事情了,大部分知识都已经在操作系统中学过了。
主要是几点有疑问的地方: P168, P170-171
然后是一个学到的东西: P165
最后 P173 讲的 bash 执行一个程序时内部的逻辑流程,这个挺有用:
1. bash 进程会 fork 出一个新进程,新的进程直接调用 execve() 来执行对应的 ELF 文件,此时进入内核态
2. 检查文件头是否符合要求
3. 寻找动态链接的 interp 段,设置动态链接器路径
4. 根据 ELF 文件内容,进行映射和初始化
5. 修改返回地址,如果静态链接那么就是程序的入口,如果时动态链接那么就是动态链接的入口