用户程序要在系统中运行,必须先把它装入内存,然后再把它变成一个可以执行的程序。通常需要以下步骤:
- 编译,由编译程序对用户源程序进行编译,形成若干个目标模块。
- 链接,由链接程序将编译后形成的一组目标模块以及它们所需要的库函数链接在一起,形成一个完整的装入模块。
- 装入,由装入程序将装入模块装入内存。
程序的装入,将一个装入模块装入内存,有三种方式:
- 绝对装入方式:程序中的逻辑地址与实际内存地址完全相同
- 可重定位装入方式:地址变换通常是在进程装入时一次完成的,以后不再改变,所以称为静态重定位
重定位:装入时对目标程序的指令和数据地址的修改过程 - 动态运行时的装入方式:动态运行时的装入程序把装入模块装入内存后,并不立即把装入模块中的逻辑地址变为物理地址,而是把这种地址转换推迟到程序真正要执行时才进行——为使地址变换不影响指令的执行速度,需要重定位寄存器的支持。