操作系统——3.并发与进程

第三章 内存管理

3.1 程序的装入和链接

★ 高级语言的源代码转化为进程的3个基本步骤:
编译:由编译程序(compiler)将用户源代码编译成若个目标模块
链接:由链接程序(linker)将目标模块和库函数链接,形成一个完整的装入模块
装入:由装入程序(loader)将装入模块装入内存。

★ 空间分类
名空间:编写程序时,用符号名来访问某一单元。符号名空间
逻辑空间:目标程序中,以0为基址进行编址,符号名用具体的数据代替。
内存空间:物理地址

★ 链接
含义:源程序经过编译后,可得到一组目标模块,再利用链接程序将这组目标模块与所需的库函数链接形成装入模块。
静态链接:在程序运行之前,先将各个目标模块及它们所需的库函数链接成一个完整的装配模块(又称执行模块),以后不再拆开。
装入时动态链接:目标模块在装入内存时,采用边装入边链接的链接方式。
运行时链接:对某些目标模块的链接,是在程序执行中需要该目标模块时,由操作系统去找到该模块并将之装入内存,随后把它链接到调用者模块上。

★ 装入

装入的任务:将可装入模块装入内存;地址重定位:将执行文件中的逻辑地址转化为内存物理地址的过程。

绝对装入方式:

  • 在编译时就知道程序将驻留在内存中的具体位置,编译程序产生绝对地址的目标代码
  • 装入模块在装入内存时,由于程序中的逻辑地址与实际内存地址完全相同,故不需对
    程序和数据的地址进行修改。
  • 优点:实现简单、无须进行逻辑地址到物理地址的变换。
  • 缺点:程序每次必须装入同一内存区;程序员必须事先了解内存的使用情况,根据内存情况确定程序的逻辑地址;不适于多道程序系统。

可重定位(静态重定位)装入方式:

  • 编译时采用相对地址,即编译器假设是装入到从零开始的内存位置。
  • 逻辑地址与装入内存后的物理地址无直接关系。
  • 必须重定位。静态重定位技术:地址映射在程序装入时进行,以后不再更改程序地址。
  • 缺点:程序重定位后就不能移动,因而不能重新分配内存,不利于内存的有效利用;程序在存储空间中只能连续分配,不能分布在内存的不同区域;难于共享。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值