- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 动态存储管理 8.1 概述 8.2 可利用空间表 8.3 边界标识法 练习与作业 在前面各章数据结构的学习中,对每一种数据结构虽然介绍了它们在内存储器中的映象,但只是借助高级语言中的变量说明加以描述,并没涉及具体的存储分配。 而实际上,结构中的每个数据元素都占有一定的内存位置.在程序执行的过程中,数据元素的存取是通过对应的存储单元来进行的。 在早期的计算机上,这个存储管理的工作是由程序员自己完成的,在程序执行之前.首先需要用机器语言或汇编语言编写的程序输送到内存的某个固定区域上,并预先给变量和数据分配好对应的内存地址(绝对地址或相对地址)。 在有了高级语言之后,程序员不需要直接和内存地址打交道,程序中使用的存储单元都由逻辑变量(标识符)来表示.它们对应的内存地址都是由编译程序在编译或执行时进行分配。 当计算机是被单个用户使用时,那么整个内存除操作系统占用一部分之外,都归这个用户的程序使用。但在多用户分时并发系统中.多个用户程序共享一个内存区域,此时每个用户程序使用的内存就由操作系统来进行分配了。 对操作系统和编译程序来说,存储管理是一个复杂而又重要的问题。 动态存储管理的基本问题是: 系统如响应用户提出的“请求”分配内存? 又如何回收那些用户不再使用而“释放”的内存,以备新的”请求”产生时重新进行分配? 提出请求的用户要求分配的内存量大小不同例如,在编译程序中是一个或几十字,而在系统中则是几千、几万,甚至是几十万。通常,系统每次分配给用户(不论大小)都是一个地址连续的内存区。 将系统已分配给用户使用的地址连续的内存区为“占用块”,称未曾分配的地址连续的内存区为“可利用空间块”或“空闲块”。 不管什么样的动态存储管理系统.在刚开工时,整个内存区是一个“空闲块” 。随着用户进入系统,先后提出存储请求,系统依次进行分配。因此,在系境运行的初期,整个内存区基本上分隔成两大部分, 低地址区包含若干占用块; 高地址区(即分配后的剩余部分)是一个“空闲块·。 经过一段时间以后,有的用户运行结束,它所占用的内存区变成空闲块,这使整个内存区呈现出占用块和空闲块交错的状态。 有新的用户进入系统请求分配内存,那么系统将如间做呢? 系统继续从高地址的空闲块中进行分配,面不理会已分配给用户的内存区是否已空闲,直到分配无法进行(即剩的空闲块不能满足分配的请求)时,系统才去回收所有用户不再使用的空闲块,并且重新组织内存,将所有空闲的内存区连接在一起成为一个大的空闲块。 用户一旦运行结束,便将它所占内存区释放成为空闲块.同时,每当新的用户请求分配内存时,系统需要巡视整个内存区中所有空闲块,并从中找出一个“合适’的空闲块分配之。 系统需要建立一张记录所有空闲块的“可利用空间表”,其结构可以是“目录表”,也可以是“链表”。 本节主要学习利用基于链表结构的可利用空间表进行动态存储分配的方法 。 一、可利用空间表的三种结构 可利用空间表中包含所有可分配的空闲块,每一块是链表中的一个结点。当用户请求分配时,系统从可利用空间表中删除一个结点分配之;当用户释放其所占内存时,系统即回收并将它插入到可利用空间表中。因此,可利用空间表亦称作“存储池”。根据系统运行的不同情况,可利用空间表可以有下列三种不同的结构形式: 系统运行期间所有用户请求分配的存储量大小相同。 动态存储分配策略:在系统开始运行时将归它使用的内存区按所需大小分割成若于大小相同的块,然后用指针链接成一个可利用空间表。由于表中节点大小相同,则分配时无需查找,只要将第一个结点分配给用户即可;同样,当用户释放内存时,系统只要将用户释放的空闲块插入在表头即可,可见这种情况下的可利用空间表实质上是一个链栈。 系统运行期间用户请求分配的存储量有若干种大小的规格。 动态存储分配策略:建立若干个可利用空间表,同一链表中的结点大小相同。 例如,某动态存储管理系统中的用户将请求分配2个字、4个字或8个字的内存块,则系统建立三个结点大小分别为3个字、5个字和9个字的链表,它们的表头指针分别为av2、av4和av8. 分配和回收策略:和第一种情况类似,只是当结点大小和请求分配的量相同的链表为空时,需查询结点较大的链表,并从中取出一个结点,将其中一部分内存分配给用户,而将剩余部分插入到相应大小的链表中。回收时,也只要将释放的空闲块插入到相应大小的链表的表头中去即可
您可能关注的文档
- 第五章自动控制系统的频域分析法.ppt
- 刑事诉讼的基本制度.ppt
- 中国十大名花和云南八大名花.ppt
- 第五章薄板弯曲.ppt
- 划时代投资利器--股指期货.ppt
- 列方程组解应用题1.ppt
- 第五章言语和语言障碍的评估.ppt
- 列方程解决问题复习课2.ppt
- 列方程解应用题(五年级上册).ppt
- 列方程解应用题专题.ppt
- 半导体材料性能提升技术突破与应用案例分析报告.docx
- 半导体设备国产化政策支持下的关键技术突破与应用前景报告.docx
- 剧本杀市场2025年区域扩张策略研究报告.docx
- 剧本杀行业2025人才培训体系构建中的市场需求与供给分析.docx
- 剧本杀行业2025年人才培训行业人才培养模式创新与探索.docx
- 剧本杀行业2025年内容创作人才需求报告.docx
- 剧本杀行业2025年区域市场区域剧本市场消费者满意度与市场竞争力研究报告.docx
- 剧本杀市场2025年区域竞争态势下的区域合作策略分析报告.docx
- 剧本杀行业2025人才培训与行业人才培养模式创新.docx
- 剧本杀行业剧本创作人才心理素质培养报告.docx
文档评论(0)