精华内容
下载资源
问答
  • 4.3程序的装入

    2020-11-30 12:56:56
    程序的装入与链接 程序执行的步骤 编译 由编译程序将用户源代码编译成若干个目标模块 链接 由链接程序将编译后形成的目标模块以及它们所需要的库函数,链接在一起,形成一个装入模块。 装入 由装入程序将装入模块...

    程序的装入与链接

    程序执行的步骤

    1. 编译
      由编译程序将用户源代码编译成若干个目标模块
    2. 链接
      由链接程序将编译后形成的目标模块以及它们所需要的库函数,链接在一起,形成一个装入模块。
    3. 装入
      由装入程序将装入模块装入主存的过程。

    程序装入采用的三种方式

    1. 绝对装入方式

    2. 可重定位方式

    • 在可执行文件中,列出各个需要重定位的地址单元和相对地址值。
    • 当用户程序装入内存中时,一次性的实现逻辑地址到物理地址的转换,以后不再转换。
      重定位的优点与缺点
      优点:不依赖于硬件,可以装入有限多道程序;无需硬件支持。
      缺点:一次性全部装入;一个程序通常需要占用连续的内存空间;程序装入内存后运行时不能移动。
    1. 动态运行时装入方式
      在装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换为推迟到程序要真正执行时才进行。实现时需要重定位寄存器。

    动态运行时装入方式的优点与缺点

    优点:不需要一次装入;OS可以将一个程序分散存放于不连续的内存空间,可以移动程序。能够支持程序执行中产生的地址引用,入指针变量。
    缺点:需要硬件支持,OS实现较复杂。它是虚拟存储的基础。

    程序的链接

    程序链接的目的
    ★链接程序的功能是将进过编译或汇编后所得到的一组目标模块以及它们所需要的库函数,装配成一个完整的装入模块。
    ★实现链接的三种方法:

    • 静态链接:事先进行链接以后不再拆开的链接方式
    • 装入时动态链接:用户源程序经编译后所得到的目标模块,是在装入主存时,边装入边链接的。
    • 运行时动态链接:可将某些目标模块的链接,推迟到执行时才进行。
    展开全文
  • 程序的装入和链接

    2020-07-19 20:17:01
    程序的装入,将一个装入模块装入内存,有三种方式: 绝对装入方式:程序中的逻辑地址与实际内存地址完全相同 可重定位装入方式:地址变换通常是在进程装入时一次完成的,以后不再改变,所以称为静态重定位 重定位:...

    用户程序要在系统中运行,必须先把它装入内存,然后再把它变成一个可以执行的程序。通常需要以下步骤:

    • 编译,由编译程序对用户源程序进行编译,形成若干个目标模块。
    • 链接,由链接程序将编译后形成的一组目标模块以及它们所需要的库函数链接在一起,形成一个完整的装入模块。
    • 装入,由装入程序将装入模块装入内存。

    程序的装入,将一个装入模块装入内存,有三种方式:

    • 绝对装入方式:程序中的逻辑地址与实际内存地址完全相同
    • 可重定位装入方式:地址变换通常是在进程装入时一次完成的,以后不再改变,所以称为静态重定位
      重定位:装入时对目标程序的指令和数据地址的修改过程
    • 动态运行时的装入方式:动态运行时的装入程序把装入模块装入内存后,并不立即把装入模块中的逻辑地址变为物理地址,而是把这种地址转换推迟到程序真正要执行时才进行——为使地址变换不影响指令的执行速度,需要重定位寄存器的支持。
    展开全文
  • 程序的装入和连接

    千次阅读 2018-01-01 13:31:30
    程序在系统中运行,必须经过以下几个步骤。 (1)编译,由编译程序对用户源程序进行编译,形成若干个...程序的装入 绝对装入方式 适用单道程序,因为可预测程序将驻留在内存什么位置。用户将程序编译后,将产生绝

    程序在系统中运行,必须经过以下几个步骤。
    (1)编译,由编译程序对用户源程序进行编译,形成若干个目标模块。
    (2)连接,由链接程序将编译后形成的一组目标模块以及他们所需要的库函数链接在一起,形成一个完整的装入模块。
    (3)装入,由装入程序(Loader)将装入模块装入内存。

    程序的装入


    1. 绝对装入方式

    适用单道程序,因为可预测程序将驻留在内存什么位置。用户将程序编译后,将产生绝对地址(物理地址)的目标代码。

    可重定位装入方式

    适用于多道程序环境,编译程序不可能预知编译后的目标模块放在内存中何处。因此应采用可重定位装入方式,它可以根据内存的具体情况将装入模块装入到内存的适当位置。
    可重定位装入程序将装入模块装入内存后,会使装入模块中的所有逻辑地址与实际装入内存的物理地址不同。又因为地址变化通常是在进程装入时一次完成的,后不变化,故称静态重定位

    动态运行时的装入方式

    动态运行时装入程序把装入模块装入内存后,并不立即把装入模块中的逻辑地址转换为物理地址,而是把这种地址转换推迟到程序真正要执行时才进行。为使地址转行不影响指令的执行速度,这种方式需要重定位寄存器的支持

    程序的链接


    1. 静态链接方式

    程序运行前,将各目标模块及他们所需的库函数链接成一个完整的装配模块。以后不再拆开。我们把这种方式称为静态链接方式。
    eg:目标模块A,B,C,长度分别为L,M,N。
    (1)对相对地址进行修改。由编译程序产生的所以目标模块中,都是用的时相对地址,其起始地址都为0,每个模块中的地址都是相对于起始地址计算的。链接成装入模块后,原模块B和C在装入模块的起始地址不再是0。
    (2)变换外部调用符号,将每个模块中所用的外部调用符号也变为相对地址。

    装入时动态链接

    将用户源程序编译后得到的一组目标模块,在装入内存时,采用边装入边链接的方式。即在装入目标模块的时候,若发生了一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并装入内存。
    (1)便于修改和更新。对于静态链接装配到一起的装入模块,如果要修改或更新其中的某个模块必须重新打开装入模块。若采用动态链接方式,由于各目标模块时分开存放的,所以要修改各目标模块相对容易。
    (2)便于实现对目标模块的共享。在采用静态链接的方式时,每个应用模块都必须含有其目标模块的拷贝,无法实现对目标模块的共享。但采用装入时动态链接的方式时,OS很容易将一个目标模块链接到几个应用模块上,实现多个应用程序对该模块的共享。

    运行时动态链接

    将某些模块的链接推迟到程序执行时才进行。即在执行中,发现一个被调用模块尚未装入内存时,OS去找到该模块,并将之装入内存,将其链接到调用者模块上,凡在执行过程中未被调用的目标模块,都不会被调入内存和被链接到装入模块上。

    展开全文
  • 程序的装入重新定位

    2016-08-30 17:08:00
    程序的装入为了阐述上的方便,我们先介绍一个无需进行链接的单个目标模块的装入过程。该目标模块也就是装入模块。在将一个装入模块装入内存时,可以有绝对装入方式、可重定位装入方式和动态运行时装入方式,下面分别...

      

    程序的装入
    为了阐述上的方便,我们先介绍一个无需进行链接的单个目标模块的装入过程。该目
    标模块也就是装入模块。在将一个装入模块装入内存时,可以有绝对装入方式、可重定位
    装入方式和动态运行时装入方式,下面分别简述之。
    第四章 存 储 器 管 理 ·119·
    1.绝对装入方式(Absolute Loading Mode)
    在编译时,如果知道程序将驻留在内存的什么位置,那么,编译程序将产生绝对地址
    的目标代码。例如,事先已知用户程序(进程)驻留在从 R 处开始的位置,则编译程序所产生
    的目标模块(即装入模块)便从 R 处开始向上扩展。 绝对装入程序按照装入模块中的地址, 将
    程序和数据装入内存。装入模块被装入内存后,由于程序中的逻辑地址与实际内存地址完
    全相同,故不须对程序和数据的地址进行修改。
    程序中所使用的绝对地址,既可在编译或汇编时给出,也可由程序员直接赋予。但在
    由程序员直接给出绝对地址时,不仅要求程序员熟悉内存的使用情况,而且一旦程序或数
    据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,
    然后在编译或汇编时,再将这些符号地址转换为绝对地址。
    2.可重定位装入方式(Relocation Loading Mode)
    绝对装入方式只能将目标模块装入到内存中事先指定的位置。在多道程序环境下,编
    译程序不可能预知所编译的目标模块应放在内存的何处,因此,绝对装入方式只适用于单
    道程序环境。在多道程序环境下,所得到的目标模块的起始地址通常是从 0 开始的,程序
    中的其它地址也都是相对于起始地址计算的。此时应采用可重定位装入方式,根据内存的
    当前情况,将装入模块装入到内存的适当位置。
    值得注意的是, 在采用可重定位装入程序将
    装入模块装入内存后, 会使装入模块中的所有逻
    辑地址与实际装入内存的物理地址不同,图 4-3
    示出了这一情况。例如,在用户程序的 1000 号
    单元处有一条指令 LOAD 1,2500,该指令的功
    能是将 2500 单元中的整数 365 取至寄存器 1。
    但若将该用户程序装入到内存的 10000~15000
    号单元而不进行地址变换, 则在执行 11000 号单
    元中的指令时,它将仍从 2500 号单元中把数据
    取至寄存器 1 而导致数据错误。由图 4-3 可见,
    正确的方法应该是将取数指令中的地址 2500 修
    改成 12500,即把指令中的相对地址 2500 与本程序在内存中的起始地址 10000 相加,才得
    到正确的物理地址 12500。除了数据地址应修改外,指令地址也须做同样的修改,即将指令
    的相对地址 1000 与起始地址 10000 相加,得到绝对地址 11000。通常是把在装入时对目标
    程序中指令和数据的修改过程称为重定位。又因为地址变换通常是在装入时一次完成的,
    以后不再改变,故称为静态重定位。
    3.动态运行时装入方式(Dynamic Run-time Loading)
    可重定位装入方式可将装入模块装入到内存中任何允许的位置,故可用于多道程序环
    境;但这种方式并不允许程序运行时在内存中移动位置。因为,程序在内存中的移动,意
    味着它的物理位置发生了变化, 这时必须对程序和数据的地址(是绝对地址)进行修改后方能
    运行。然而,实际情况是,在运行过程中它在内存中的位置可能经常要改变,此时就应采
    用动态运行时装入的方式。
    LOAD 1,2500
    365
    LOAD 1,2500
    365
    10000
    11000
    12500
    15000
    5000
    2500
    1000
    0
    作业地址空间
    内存空间
    图 4-3 作业装入内存时的情况
    ·120· 计算机操作系统
    动态运行时的装入程序在把装入模块装入内存后,并不立即把装入模块中的相对地址
    转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存
    后的所有地址都仍是相对地址。为使地址转换不影响指令的执行速度,这种方式需要一个
    重定位寄存器的支持,我们将在 4.3 节中做详细介绍

    转载于:https://www.cnblogs.com/zhangfeionline/p/5822758.html

    展开全文
  • 程序的装入和链接的3种分类方式

    千次阅读 2020-04-18 21:49:46
    程序的装入 3种方式 绝对装入方式 官方解释:在编译时,如果知道程序驻留在内存的什么位置,那么编译程序将产生绝对地址的目标代码。装入模块装入内存后,程序中的逻辑地址与实际内存地址完全相同,不需对程序的数据...
  • 4-2 程序的装入和链接

    2020-02-16 17:28:52
    编译:由编译程序将用户源代码编译成若干个目标模块 ...4.2.1程序的装入(简答)!! 绝对装入方式:当计算机系统很小,且仅能运行单道程序时,完全有可能知道程序将驻留在内存的什么位置,此时采用绝对装入方式。...
  • 程序的装入和链接 编译:由编译程序将用户源代码编译成若干个目标模块 链接:由链接程序将目标模块以及它们所需的库函数链接在一起,形成一个完成的装入模块 装入:由装入程序将装入模块装入内存
  • 一、程序的装入 1、绝对装入方式 程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员直接赋予。但在由程序员直接给出绝对地址时,不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要...
  • 程序的装入: 补充:程序必须经过编译,链接,运行,装入内存后才能运行。 1.绝对装入方式: 在编译时,事先直到程序将驻留在内存的位置,则编译程序可直接将符号地址转为内存地址(绝对地址)。 2.可重定位装入...
  • 4.2 程序的装入和链接 先导知识 将用户源程序变为可在内存中执行的程序的步骤: 编译:由编译程序将用户源代码编译成若干个目标模块 链接:由链接程序将编译后形成的一组目标模块,以及它们所需要的库函数链接在...
  • 程序的装入和链接 1,基本过程 1,编译:.C/.CPP/.ASM文件转换为.OBJ文件; 2,链接:.OBJ文件加上.LIB文件链接形成装入模块; 3,装入:装入模块装入物理内存后即可运行; 2,程序的装入 1)绝对装入方式 ...
  • 一,程序的装入和链接 1,程序进内存的一般过程: 1)编译compiler:编译程序:将用户源代码编译成若干个目标模块。 2)链接link:链接程序:将形成的一组目标模块,及它们需要的库函数链接在一起,形成一个完整的...
  • 操作系统学习记录----程序的装入 概念 源程序经过编译和链接后形成一个完整的装入模块,将这个装入模块装入内存的过程。 三种装入方式 装入方式 特征 绝对装入 仅适用于单道程序,逻辑地址与物理地址完全...
  • 30程序的装入和链接

    2021-01-18 09:28:46
    链接:由链接程序将编译后形成的一组目标模块,以及所需要的库函数链接在一起,形成一个完整的装入模块 装入:由装入程序将装入模块装入内存运行 1、 程序的链接有三种方式: 1.1:静态链接:在程序运行前,先将各...
  • 知识回顾: 主存:保存进程运行时的程序和数据 寄存器:速度最快,价格昂贵容量不大,一般以字为单位,只要存放指令一次操作的数据就够了 。...1.程序的装入和链接 多道程序环境下,程序运行必须...
  • 操作系统10————存储器管理之程序的装入和链接 一.目录 操作系统10————存储器管理之程序的装入和链接 一.目录 二.程序的运行之前 三.程序的装入 1. 绝对装入方式(Absolute Loading Mode)  ...
  • 4.2程序的装入与链接

    2020-04-28 10:47:25
    装入模块直接生成绝对地址,装入内存,只适合单道程序系统,多道程序系统是无法事先预知存储绝对地址装入模块内是相对地址。不需要事先指定绝对地址,采用相对地址,根据内存情况,选择存储位置,绝对...
  • 程序的装入和链接一个用户源程序要变为在内存中可执行的程序,通常要进行以下处理:编译:由编译程序将用户源程序编译成若干个目标模块。链接:由链接程序将目标模块和相应的库函数链接成装入模块。装入:由装入程序...
  • 新的更新内容请到mwhls.top查看。 无图/无目录/格式错误/更多相关请到上方的文章首发页面查看。 程序运行前的步骤 编译由编译程序(Compiler)对源程序编译,形成若干目标...程序的装入 绝对装入方式(Absolute Loa
  • 程序的装入和链接1.概述程序要运行,先得为这个程序创建进程。创建进程的第一件事就是将程序和程序需要用到的数据装入内存。由用户编写的源代码如何变成一个存放在内存中的程序?步骤如下: 编译、汇编:将源代码,...
  • 程序的装入方式

    千次阅读 2017-02-27 17:06:14
    1 绝对装入方式 2 可重定位装入方式 3 动态运行时装入方式
  • 一、程序的装入和链接 程序的装入 a. 绝对装入方式(逻辑地址=物理地址) 优点:装入过程简单。不需任何地址变换,程序中的逻辑地址与实际内存物理地址完全相同。 缺点:过于依赖硬件结构, 只适用早期针对硬件直接...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,276
精华内容 2,110
关键字:

程序的装入