一、链接
链接是将各个目标模块以及它们所需的库函数装配成一个完整的可执行文件的过程。根据链接的时间不同,链接方式可分为:
静态链接:在程序运行之前,先将各目标模块及它们所需的库函数连接成一个完整的可执行文件,之后不再拆开。
装入时动态链接:将各目标模块装入内存时,边装入边链接。
运行时动态链接:在程序执行中需要该目标模块时,才对它进行链接。其优点是便于修改和更新,也便于实现对目标模块的共享。
二、装入
装入是将用户程序装入内存并使其变为可执行程序的过程。根据装入的方式不同,装入可分为:
绝对装入:编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。但绝对装入只适用于单道程序环境。
静态重定位:又称可重定位装入。编译、链接后的装入模块的地址都是从0开始的,装入时对地址进行“重定位”,将逻辑地址变换为物理地址(地址变换是在装入时一次完成的)。静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,作业一旦进入内存后,在运行期间就不能再移动,也不能再申请内存空间。
动态重定位:又称动态运行时装入。编译、链接后的装入模块的地址都是从0开始的。装入程序把装入模块装入内存后,并不会立即把逻辑地址转换为物理地址,而是把地址转换推迟到程序真正要执行时才进行。因此装入内存后所有的地址依然是逻辑地址。采用动态重定位时,允许程序在内存中发生移动,便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间。
标签:操作系统,装入,程序,地址,内存,模块,链接 From: https://blog.csdn.net/qq_39311377/article/details/144094547