4.3程序的装入

本文详细介绍了程序从编译到执行的步骤,包括编译、链接和装入过程。讨论了绝对装入、可重定位装入和动态运行时装入三种方式,分析了各自的优点和缺点。动态运行时装入方式允许程序分散存放并支持程序执行中的地址引用,但需要硬件支持。程序链接的目的是将目标模块和库函数装配成完整装入模块,静态链接、装入时动态链接和运行时动态链接是实现链接的常见方法。
摘要由CSDN通过智能技术生成

程序的装入与链接

程序执行的步骤

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

程序装入采用的三种方式

  1. 绝对装入方式

  2. 可重定位方式

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

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

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

程序的链接

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

  • 静态链接:事先进行链接以后不再拆开的链接方式
  • 装入时动态链接:用户源程序经编译后所得到的目标模块,是在装入主存时,边装入边链接的。
  • 运行时动态链接:可将某些目标模块的链接,推迟到执行时才进行。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值