您当前的位置: 首页 > 

光怪陆离的节日

暂无认证

  • 1浏览

    0关注

    1003博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

30程序的装入和链接

光怪陆离的节日 发布时间:2021-01-18 09:28:46 ,浏览量:1

程序装入和链接 创建进程首先要将程序和数据装入内存。将用户源程序变为可在内存中执行的程序,通常分为以下几个步骤: 编译:由编译程序将用户源代码编译成若干目标模块 链接:由链接程序将编译后形成的一组目标模块,以及所需要的库函数链接在一起,形成一个完整的装入模块 装入:由装入程序将装入模块装入内存运行

在这里插入图片描述

1、 程序的链接有三种方式: 1.1:静态链接:在程序运行前,先将各目标模块以及它们所需的库函数链接在一起,形成 1.2:装入时动态链接:将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。 1.3运行时动态链接:对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行的链接。其优点是便于修改和更新,便于实现对目标模块的共享。 2、内存的装入模块在装入北村时,同样有以下三种方式: 2.1:绝对装入:在编译时,如果知道程序将驻留在内存某个位置,编译程序将产生绝对地址的目标代码。绝对装入程序按照装入模块中的地址,将程序和数据装入内存。由于程序中的逻辑地址与实际内存地址完全相同,故不用对程序和数据地址进行修改。 绝对装入方式只适用于单道程序环境。程序所使用的绝对地址,可在编译或汇编时给出,也可以时程序员直接赋予。 2.2:可重定位装入:在多道程序环境下,多个目标模块的起始地址通常都是从0开始,程序中的其他地址都是相对于起始地址的,此时应采用可定位装入方式。根据北村的当前情况,将装入模块装入到内存的适当位置。装入时对目标程序中指令和数据的修改过程称为重定位,地址变换通常是在装入时一次完成的,所以又称为静态重定位,如下:

在这里插入图片描述 在这里插入图片描述

 2.3:动态运行时装入:也称动态重定位,程序在内存中如果发生移动,就需要采取动态的装入方式。装入程序在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这些地址转换推迟到程序真正要执行才进行。因此,装入内存后的所有地址均为相对地址。这种方式需要重定位寄存器的支持。如下

在这里插入图片描述

关注
打赏
1665731445
查看更多评论
立即登录/注册

微信扫码登录

0.0402s