程序的装入和链接

用户程序要在系统中运行,必须先将它装入内存,然后再将其转变为一个可以执行的程序,通常都要经过以下几个步骤:
(1) 编译;  (2) 链接;  (3) 装入。

                          程序的装入和链接_第1张图片

 程序的链接

1. 静态链接方式

  在程序运行之前,先将各目标模块及它们所需的库函数链接成一个完整的装配模块,以后不再拆开。

程序的装入和链接_第2张图片


2. 装入时动态链接(Load-time Dynamic Linking)

  这是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。装入时动态链接方式有以下优点:
  
(1) 便于修改和更新。
  
(2) 便于实现对目标模块的共享。

3. 运行时动态链接

  链接在运行时进行,即在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS 找出该模块,将它装入内存,并把它链接到调用者模块上。

程序的装入

  在将一个装入模块装入内存时,有如下三种装入方式:

1. 绝对装入方式(Absolute Loading Mode)

  已知道程序将驻留在内存的什么位置(绝对地址),经编译后,产生绝对地址(即物理地址)的目标代码。

程序的装入和链接_第3张图片
2. 可重定位装入方式

  用户程序编译所形成的若干个目标模块,起始地址通常都是从0开始的,程序中的其它地址也都是相对于起始地址计算的。

程序的装入和链接_第4张图片

3. 动态运行时的装入方式

  相比于静态重定位,重定位不应在装入时进行,而必须将它推迟到程序真正执行时进行,我们将这种重定位称作动态重定位,相应的装入方式被称作动态运行时装入方式。

 

你可能感兴趣的:(操作系统)