四、存储器管理问题整理二:程序装入内存的方式及使用场景

本文详细介绍了程序在系统中运行前的三个关键步骤:编译、链接和装入,以及程序装入的三种方式——绝对装入方式、可重定位装入方式和动态运行时装入方式,解释了重定位过程及其在不同环境下的应用。

用户程序要在系统中运行,必须先将它装入内存,然后再将其转变为一个可执行的程序,通常经过以下几个步骤:

(1)编译:在编译程序对用户源程序进行编译,形成若干个目标模块。

(2)链接:由连接程序将编译后的一组目标模块以及他们所需的库函数链接在一起,形成一个完整的装入模块。

(3)装入:由装入程序将装入模块装入内存

程序的装入分为以下三种方式:

一、绝对装入方式

编译后产生绝对地址的目标代码。

例:事先知道用户程序驻留在从R处开始的位置,则编译程序所产生的目标模块,便可从R处开始向上扩展。

使用环境:计算机系统很小,且仅能运行单道程序时,因为这种情况下完全可能知道程序驻留在何处。

 

二、可重定位装入方式

用户编译形成多个目标模块,他们的起始地址通常是从0开始的,程序中的其他地址也是相对于起始地址计算的,它可以根据内存的具体情况将装入模块装入到内存的适当位置。

重定位:将程序中的逻辑地址转化为内存中物理地址的过程叫做重定位。

使用环境:多处理机及多道程序系统中。

 

三、动态运行时装入方式

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

重定位寄存器:用来存放程序(数据)在内存中的起始地址,程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值