进程加载流程
1.从目标文件中读取足够的头部信息,找出需要多少地址空间;
2.分配地址空间,如果目标代码的格式具有独立的段,那么就将地址空间按独立的段划分;
3.将程序读入地址空间的段内;
4.将程序末尾的bss段空间填充为0,如果虚拟内存系统不自动这么做时;
5.如果体系结构需要,创建一个堆栈段(stack segment);
6.设置诸如程序参数和环境变量的其他运行时信息;
7.开始运行程序,从main函数的地址初开始顺序执行程序。
从上面可以看出,对于一个应用级程序员最有用的结论,就是由于加载器每次将程序加载前需要分配地址空间,所以每次程序加载时不会使用同样的地址。