第四章 存储器管理(1)——基本知识

本文详细介绍了程序装入的三个步骤:编译、链接和装入,并探讨了绝对装入、可重定位装入和动态运行时装入方式。同时,阐述了链接程序在静态链接、装入时动态链接和运行时动态链接的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      存储器管理的主要对象是内存,由于对外存的管理与对内存的管理相类似,只是它们的用途不同,即外存主要用来存放文件,所以我们把对外存的管理放在文件管理。

4.1、程序的装入和链接

      在多道程序环境下,要使程序运行,必须先为之创建进程。而创建进程的第一件事,便是将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常都要经过以下几个步骤首先是要编译,由编译程序(Compiler)将用户源代码编译成若干个目标模块(Object Module);其次是链接,由链接程序(Linker)将编译后形成的一组目标模块,以及它们所需要的库函数链接在一起,形成一个完整的装入模块(Load Module);最后是装入,由装入程序(Loader)将装入模块装入内存。图4-1示出了这样的三步过程。

                                          

图4-1 对用户程序的处理步骤

4.1.1、程序的装入

        在将一个装入模块装入内存时,可以有绝对装入方式、可重定位装入方式和动态运行时装入方式

4.1.2、程序的链接

      源程序经过编译后,可得到一组目标模块,再利用链接程序将这组目标模块链接,形成装入模块。根据链接时间的不同,可把链接分成如下三种:

(1) 静态链接

       在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开。我们把这种事先进行链接的方式称为静态链接方式。

(2) 装入时动态链接

       这是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式

(3) 运行时动态链接

       这是指对某些目标模块的链接,是在程序执行中需要该(目标)模块时,才对它进行的链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值