欢迎来到天天文库
浏览记录
ID:48524476
大小:301.00 KB
页数:63页
时间:2020-01-23
《第5章 存储器管理.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第五章存储器管理第五章存储器管理5.1程序的装入和链接5.2连续分配存储管理方式5.3对换5.4分页存储管理方式5.5分段存储管理方式引言存储器是计算机系统的组成部分之一,包括超高速缓冲存储器、内存储器和外存储器三种类型。如何对它们实施有效的管理,不仅直接影响到存储器的利用率,而且还对系统性能有重大影响。本章存储器管理讨论的主要对象是内存;由于对外存的管理与对内存的管理相似,只是两者的用途不同,又因外存主要用来存放文件,故对外存的管理将放在磁盘存储器管理一章中介绍;高速缓存速度最快但数量有限,对高速缓存的使用和管理将在虚
2、拟存储器一章中介绍。5.1程序的装入和链接一、对用户程序的处理步骤二、程序的装入三、程序的链接一、对用户程序的处理步骤在多道程序环境下,程序要运行必须为之创建进程,而创建成的第一件事,就是要将程序和数据装入内存。如何将一个用户源程序变成一个可在内存中执行的程序(→进程),通常要经过以下几步:1)编译:由编译程序(Compiler)将用户源程序代码编译成若干个目标模块(ObjectModule);2)链接:由链接程序(Linker)将编译好的目标模块以及它们所需要的库函数,连接在一起,形成一个装入模块(LoadModule
3、);3)装入:由装入程序(Loader)将装入模块装入内存。如图所示:对用户程序的处理步骤。库编译程序产生的目标模块第一步第二步第三步链接程序装入程序装入模块内存二、程序的装入单个目标模块的装入过程,无需链接,这时的目标模块也就是装入模块。将一个装入模块装入时,可采用以下三种方式:1、绝对装入方式:由装入程序根据装入模块中的地址,将程序和数据装入内存;2、可重定位方式:由装入程序根据内存当时的实际使用情况,将装入模块装入到内存中的适当地方;3、动态运行时装入方式。1、绝对装入方式(AbsoluteLoadingMode)
4、绝对装入程序按照模块中的地址,将程序和数据装入内存。装入模块被装入内存后,不需对程序和数据的地址进行修改。在多道程序环境下是不可能事先知道每一道程序在内存中的位置的,因此这种装入方式只能用于单道程序环境。程序中所使用的绝对地址,既可在编译或汇编时给出,也可由程序员直接赋予。但在由程序员直接给出绝对地址时,不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。2、可重定位装入方式(Relocatio
5、nLoadingMode)在多道程序环境下,由于编译程序不能预知所编译的目标模块将来会在内存的什么位置。因此不可能再用绝对装入方式,而应该用可重定位装入方式把装入模块装入内存。可重定位装入程序将根据内存的当前使用情况,将装入模块装入到内存的某个适当位置。我们把在装入时对目标程序库中的指令和数据地址的修改过程称为重定位。而只有在装入时一次完成,以后不再改变的地址变换过程称为静态重定位。如图所示。LOAD1,25003650100025005000LOAD1,2500365100001100012500150003、动态运行
6、时装入方式(DenamleRun-timeLoading)动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。动态运行时装入方式需要特殊硬件的支持。三、程序的链接链接程序的功能是将经过编译或汇编后所得到的一组目标模块以及它们所需要的库函数,装配成一个完整的装入模块。实现连接的方法有三种:1、静态链接方式(StaticLinking)2、装入时动态链接(LoadtimeDynamicLinki
7、ng)3、运行时动态链接(Run-timeDynamicLinking)1、静态链接方式(StaticLinking)将几个目标模块装配成一个装入模块时,须解决以下两个问题:(1)对相对地址进行修改。(2)变换外部调用符号。这种先进行链接所形成的一个完整的装入模块,又称为可执行文件。通常都不再拆开它,要运行时可直接将它装入内存。这种事先进行链接,以后不再拆开的链接方式,称为静态链接方式。2、装入时动态链接(LoadtimeDynamicLinking)在装入时动态链接方式中,用户源程序经编译后所得到的目标模块,是在装入
8、内存时边装入边链接的。即在装入一个目标模块时,若发生一个外部模块调用,将引起装入程序去找出相应的外部目标模块,将它装入内存并修改目标模块中的相对地址。装入时动态链接方式有以下优点:(1)便于修改和更新(2)便于实现对目标模块的共享3、运行时动态链接(Run-timeDynamicLinking)近几年流行起来的运行时
此文档下载收益归作者所有