美文网首页
程序的装入和链接

程序的装入和链接

作者: 星q_p光 | 来源:发表于2018-11-19 20:04 被阅读0次

进程如何进到内存中?

1:编译compiler:编译程序:将用户源代码编译成若干个目标模块,生成可执行目标集合。

2:链接link:链接程序:将形成的一组目标模块,及它们需要的库函数链接在一起,形成一个完整的装入模块。将各个模块合成一个整体

3:装入load:由装入程序将装入模块装入内存,构造PCB,形成进程,开始运行(使用物理地址)。

什么是地址?

分为逻辑地址和物理地址

逻辑地址(相对地址):主观上看到的,用户的程序经过汇编或编译后形成目标代码,目标代码中的指令地址是相对地址。首地址一般为零,其余的各地址都是相对于首地址来编址

物理地址(绝对地址):内存中存储单元的地址。

逻辑地址和物理地址之间会有一种相互联系,将逻辑地址转换为物理地址称为地址映射。

如何将逻辑地址装入物理地址?

分为三装入方式:绝对装入、静态可重定位装入、动态重定位装入

绝对装入:逻辑地址就是物理地址,物理地址由程序员直接赋予。只适合早期对硬件直接编程、单道环境下使用。

重定位:把目标程序中的指令和数据的逻辑地址变成内存中的物理地址的地址变换过程。

静态可重定位装入:地址映射在程序执行之前进行,重定位后物理地址不再改变。装入是根据所定位的内存地址去修改逻辑地址,添加偏移量重定位成物理地址。程序装入内存后不能移动也不易实现共享。

动态运行重定位装入:在运行时地址映射。实际运行中往往会需要程序在内存中的各位置移动,即经常需要重定位到不同的物理地址上。这种运行时移动程序要求地址变换要快速,实现时一般依靠硬件地址变换机构——一个重定位寄存器。

不同的程序链接装入方式

主要由三种:静态链接、装入时动态链接、运行时动态链接

静态链接:装入运行前将多个目标模块及所需库函数链接成一个整体,以后不再拆开。

装入时动态链接:装入内存时,边装入边链接的链接方式。

运行时动态链接:对某些目标模块的链接,在执行中需要该目标模块时,才对它进行链接。

相关文章

  • 第四章 存储器管理1

    4.1程序的装入和链接 1、创建进程的第一件事:将程序和数据装入内存。 2、程序的装入和链接 1)编译 2)链接 ...

  • 第四章存储器管理

    4.1程序的装入和链接 1、创建进程的第一件事:将程序和数据装入内存。 2、程序的装入和链接 1)编译 2)链接 ...

  • 第四章程序编译链接(1)

    程序装入和链接程序进内存的一般过程: 地址程序装入中的地址处理 不同程序链接装入 逻辑地址也叫相对地址虚地址 物理...

  • 程序的装入和链接

    进程如何进到内存中? 1:编译compiler:编译程序:将用户源代码编译成若干个目标模块,生成可执行目标集合。 ...

  • 第四章 存储器管理

    1.程序的装入和链接 1)程序的装入和链接 (1)地址的概念 逻辑地址(相对地址,虚地址) 物理地址(绝对地址,实...

  • 存储器管理

    程序运行分为三个阶段,编译,链接,装入。编译:将程序分为若干个目标块链接:将库函数以及各个目标块链接成一个整体装入...

  • 第四、五章简答

    答案已注释 可采用哪几种方式将程序装入内存?它们分别适用于何种场合? 何为静态链接?何谓装入时动态链接和运行时动态...

  • 内存

    内存1.程序的装入与链接在多道程序环境下,要使程序运行,必须创建进程,而创建进程就要将程序和数据装入内存。一个用户...

  • 4 存储器管理

    1 程序的装入和链接 创建进程的第一件事:将程序和数据装入内存。 逻辑地址(相对地址,虚地址) 物理地址(绝对地址...

  • C/C++程序编译、链接和装入

    C++程序编译过程(以g++为例) 预处理 处理#开始的命令,得到不包含#指令的.i文件,包括替换宏、引入头文件...

网友评论

      本文标题:程序的装入和链接

      本文链接:https://www.haomeiwen.com/subject/kqigzftx.html