程序的装入和链接
用户程序要在系统中运行,必须先将它装入内存,然后再将其转变为一个可以执行的程序,通常都要经过以下几个步骤:
(1) 编译; (2) 链接; (3) 装入。
程序的链接
1. 静态链接方式
在程序运行之前,先将各目标模块及它们所需的库函数链接成一个完整的装配模块,以后不再拆开。
2. 装入时动态链接(Load-time Dynamic Linking)
这是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。装入时动态链接方式有以下优点:
(1) 便于修改和更新。
(2) 便于实现对目标模块的共享。
3. 运行时动态链接
链接在运行时进行,即在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS 找出该模块,将它装入内存,并把它链接到调用者模块上。
程序的装入
在将一个装入模块装入内存时,有如下三种装入方式:
1. 绝对装入方式(Absolute Loading Mode)
已知道程序将驻留在内存的什么位置(绝对地址),经编译后,产生绝对地址(即物理地址)的目标代码。

2. 可重定位装入方式
用户程序编译所形成的若干个目标模块,起始地址通常都是从0开始的,程序中的其它地址也都是相对于起始地址计算的。
3. 动态运行时的装入方式
相比于静态重定位,重定位不应在装入时进行,而必须将它推迟到程序真正执行时进行,我们将这种重定位称作动态重定位,相应的装入方式被称作动态运行时装入方式。