程序的装入方式:
1. 绝对装入,这个Denis Ritchie和Ken Thompson估计干过
2.可重定位装入方式,启动时实现逻辑地址到绝对地址的replace
3.动态运行时装入方式,运行时实现逻辑地址到绝对地址的replace,这个有relpace有特殊寄存器完成
linux上怎么控制2和3的,感觉应该在gcc里面
另外gcc的 fPIC是编译共享动态库,这种是整个OS的内存里面只加载一份,不同进程加载的话公共内存代码段,牺牲性能节约内存
程序的链接:
1.静态链接:对相对地址进行修改,变换外部符号
2.装入时动态链接
3.运行时动态链接