- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 动态存储管理 9.1 概述 9.2 内存分配与回收策略 9.3 可利用空间的分配方法 9.1 概述 在介绍的三种数据结构---线性结构、层次结构和网状结构中,使用高级语言描述了它们的内存映象但并没有涉及具体的存储分配 实际上结构中的每个数据元素都占有一定的内存位置,在程序的执行过程中,数据元素的存取是通过对应的存储单元来进行的 当计算机是被单个用户使用时,那么整个内存除操作系统占用一部分之外,都归这个用户的程序使用(如PDP—11/01的内存为32K字,系统占用4K,用户程序可用28K)。但在多用户分时并发系统中,多个用户程序共享一个内存区域,此时每个用户程序使用的内存就由操作系统来进行分配了。并且,在总的内存不够使用时,还可采用自动覆盖技术。 9.1 概述 动态存储管理的基本问题是系统如何应用户提出的“请求”分配内存 如何回收那些用户不再使用而“释放”的内存,以备新的“请求”产生时重新进行分配 在下面的讨论中,将统称已分配给用户使用的地址连续的内存区为“占用块”,称未曾分配的地址连续的内存区为“可利用空间块”或“空闲块” 在系统运行的初期,整个内存区基本上分隔成两大部分:低地址区包含若干占用块;高地址区(即分配后的剩余部分)是一个“空闲块”。 9.2 内存分配与回收策略 内存的分配与回收是内存管理的主要功能之一 为了有效合理地利用内存,设计内存的分配和回收方法时,必须考虑和确定以下几种策略和数据结构 (1)分配结构 (2)放置策略 (3)交换策略 (4)调入策略 (5)回收策略 9.3 可利用空间的分配方法 根据系统运行的不同情况,可利用空间表可以有下列三种不同的结构形式: 第一种情况是系统运行期间所有用户请求分配的存储量大小相同。 第二种情况,系统运行期间用户请求分配的存储量有若干种大小的规格。 第三种情况,系统在运行期间分配给用户的内存块的大小不固定,可以随请求而变。 通常采用三种不同的分配策略。 (1)首次拟合法 (2)最佳拟合法 (3)最差拟合法 9.3 可利用空间的分配方法 存储紧缩 具体方法是:在整个动态存储管理过程中,不管哪个时刻,可利用空间都是一个连续的存储区,在编译过程中称为“堆”,每次分配都是从这个可利用空间中划出一块,释放(回收)时,必须将回收的空闲块合并到整个堆中,才能够重新使用,也就是存储紧缩。 堆的实现方法:设立一个指针,称为堆指针,始终指向堆的最低(或最高)地址。当用户申请N个存储块时,堆指针向高地址(或低地址)移动N个存储单位,移动之前的指针即使分配给用户的占用块的初始地址。 9.3 可利用空间的分配方法 因为可利用空间是连续的,所以利用堆指针实现地址分配非常方便,但是回收用户释放的空间就比较麻烦。一般有两种方法: (1)一旦有用户释放存储块即进行回收紧缩; (2)在程序执行过程中不回收用户随时释放的存储块,直到可利用空间不够分配或堆指针指向最高地址时才进行存储紧缩。 为实现存储紧缩,首先要对占用块进行“标志”,标志方法和上节类同(存储块的结构可能不同);其次需进行下列四步操作: (1)计算占用块的新地址 (2)修改用户的初始变量表 (3)检查每个占用块中存储的数据 (4)将所有占用块迁移到新地址去 * * *
文档评论(0)