第5节 存储器管理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 存储器管理 第五章 存储器管理 5.1 程序的装入和链接 5.2 连续分配存储管理方式 5.3 对换 5.4 分页存储管理方式 5.5 分段存储管理方式 引言 存储器是计算机系统的组成部分之一,包括超高速缓冲存储器、内存储器和外存储器三种类型。 如何对它们实施有效的管理,不仅直接影响到存储器的利用率,而且还对系统性能有重大影响。 本章存储器管理讨论的主要对象是内存;由于对外存的管理与对内存的管理相似,只是两者的用途不同,又因外存主要用来存放文件,故对外存的管理将放在磁盘存储器管理一章中介绍;高速缓存速度最快但数量有限,对高速缓存的使用和管理将在虚拟存储器一章中介绍。 5.1 程序的装入和链接 一、对用户程序的处理步骤 二、程序的装入 三、程序的链接 一、对用户程序的处理步骤 在多道程序环境下,程序要运行必须为之创建进程,而创建成的第一件事,就是要将程序和数据装入内存。 如何将一个用户源程序变成一个可在内存中执行的程序(→进程),通常要经过以下几步: 1)编译:由编译程序(Compiler)将用户源程序代码编译成若干个目标模块(Object Module); 2)链接:由链接程序(Linker)将编译好的目标模块以及它们所需要的库函数,连接在一起,形成一个装入模块(Load Module); 3)装入:由装入程序(Loader)将装入模块装入内存。 如图所示:对用户程序的处理步骤。 二、程序的装入 单个目标模块的装入过程, 无需链接,这时的目标模块也就是装入模块。将一个装入模块装入时,可采用以下三种方式: 1、绝对装入方式:由装入程序根据装入模块中的地址,将程序和数据装入内存; 2、可重定位方式:由装入程序根据内存当时的实际使用情况,将装入模块装入到内存中的适当地方; 3、动态运行时装入方式。 1、绝对装入方式(Absolute Loading Mode) 绝对装入程序按照模块中的地址,将程序和数据装入内存。装入模块被装入内存后,不需对程序和数据的地址进行修改。 在多道程序环境下是不可能事先知道每一道程序在内存中的位置的,因此这种装入方式只能用于单道程序环境。 程序中所使用的绝对地址,既可在编译或汇编时给出,也可由程序员直接赋予。 但在由程序员直接给出绝对地址时,不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。 2、可重定位装入方式(Relocation Loading Mode) 在多道程序环境下,由于编译程序不能预知所编译的目标模块将来会在内存的什么位置。因此不可能再用绝对装入方式,而应该用可重定位装入方式把装入模块装入内存。 可重定位装入程序将根据内存的当前使用情况,将装入模块装入到内存的某个适当位置。 我们把在装入时对目标程序库中的指令和数据地址的修改过程称为重定位。而只有在装入时一次完成,以后不再改变的地址变换过程称为静态重定位。 如图所示。 3、动态运行时装入方式(Denamle Run-time Loading) 动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。 动态运行时装入方式需要特殊硬件的支持。 三、程序的链接 链接程序的功能是将经过编译或汇编后所得到的一组目标模块以及它们所需要的库函数,装配成一个完整的装入模块。 实现连接的方法有三种: 1、静态链接方式(Static Linking) 2、装入时动态链接(Loadtime Dynamic Linking) 3、运行时动态链接(Run-time Dynamic Linking) 1、静态链接方式(Static Linking) 将几个目标模块装配成一个装入模块时,须解决以下两个问题: (1) 对相对地址进行修改。 (2) 变换外部调用符号。 这种先进行链接所形成的一个完整的装入模块,又称为可执行文件。通常都不再拆开它,要运行时可直接将它装入内存。 这种事先进行链接,以后不再拆开的链接方式,称为静态链接方式。 2、装入时动态链接(Loadtime Dynamic Linking) 在装入时动态链接方式中,用户源程序经编译后所得到的目标模块,是在装入内存时边装入边链接的。即在装入一个目标模块时,若发生一个外部模块调用,将引起装入程序去找出相应的外部目标模块,将它装入内存并修改目标模块中的相对地址。 装入时动态链接方式有以下优点: (1)便于修改和更新 (2)便于实现对目标模块的共享 3、运行时动态链接(Run-time Dynamic Linking) 近几年流行起来的运行时动态链接

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档