内存管理——程序的装入与链接

一、程序的装入
1、绝对装入方式
程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员直接赋予。但在由程序员直接给出绝对地址时,不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址
在这里插入图片描述
2、可重定位装入方式
在这里插入图片描述
(1)、静态重定位
程序在装入时一次性的完成程序中所有地址敏感指令及数据的地址修正且以后不再改变
特点:不允许程序在装入之后的运行过程中发生内存位置的移动
(2)、动态重定位
程序在装入时并不进行由相对地址到绝对地址的转换过程,而是伴随程序执行进展来逐步进行程序中相关地址敏感指令及数据的地址修正
特点:通常需要一定的硬件机构支持以使地址转换不影响指令执行速度
3、动态运行时装入方式
在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行
注:这个地方对于动态重定位和动态运行时装入解释的不清晰

二、程序的链接
1、静态链接
在这里插入图片描述
2、装入时动态链接
程序在装入内存之前并未进行程序各目标模块的链接,而是一边装入、一边链接
优点:
①、便于修改和更新
②、便于实现对目标模块的共享
3、运行时动态链接
对某些模块的链接推迟到执行时才执行,即在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。凡是在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上
优点:
①、加快程序的装入过程
②、节省大量的内存空间

三、重定位
把作业地址空间中使用的逻辑地址变换成内存空间中物理地址的过程,又称地址映射
1、静态重定位
当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换
2、动态重定位
在程序运行过程中要访问数据时再进行地址变换。硬件上需要重定位寄存器的支持

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值