- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可变长块管理分配策略 (1)首次匹配式堆管理策略 给表中每块首字中加入块大小的信息,分配时沿可利用表顺序查找,选择第一个大于所需空间的未用块,此块划出所需空间后剩余的部分必须大于某规定长度。 注:改进算法,可采用循环链表,释放存储区时合并相邻未用块。 (2)最优匹配式堆管理策略 分配时对可利用表从头查到尾,找到一个容量正好等于或稍大于申请空间的未用块。 注:此方法看似合理,但太花时间。 (3)最差匹配式堆管理策略 分配时找到一个容量大于申请空间且是可利用表中最大的的未用块,把它分开划给申请者,剩余部分留在表中。 注:为了节省查找最大未用块的时间,可以将可利用表的未用块从大到小排好。这样分配的剩余部分要插到表的适当位置上。 3、按块长不同分为若干集合 方法:把整个堆空间分为若干集合,每个集合中块长是相等的,并把它们链接在一起。当申请m个长度为n的块时,就到块长为n或稍大于n的集合中去查找可利用块。若该集合中由m个这样的块,则满足申请;若没有m个,则从块长较大的集合中取一块或多块,把它们分成相等的两块然后再分配。 注:优点:减少搜索时间,容易实现块合并; 缺点:会使内部碎片增加。 二、堆空间的释放与无用单元收集 1、堆空间的释放 对应语句: Dispose(P); free(p); 处理方法: 将释放块作为新块插入到可利用表的链首位置。 由于这样做一段时间后,可利用表中将有大量小块,影响分配程序的操作;此时可改进一下: 将地址连续的小块合并成一大块。 注:这样做可利用表必须按块的地址顺序组织。 2、无用单元的收集 1)执行时机: 在堆的可利用空间几乎耗尽,以至于不能满足用户申请要求,或发现可利用空间已降至某个危险点时执行。 2)收集过程: 标记阶段:查看已分配的块近期有无访问,访问过就做一标记; 收集阶段:把所有没有加标记的存储块加入可利用表中,然后消除标记。 注: 最好在可利用空间降到某个数值时就调用收集程序,以避免收集时间过长。 执行收集程序必须中断用户程序的执行,所以选择执行收集程序的时刻必须合理。 PASCAL语言运行时的数据区存储管理将栈和堆安排在存区两端,各自无关的向中间靠拢。当碰到一起时存储空间用完。此时调用无用单元收集程序。 数据区是否够用时无法估计的,堆和栈碰头也是难免的,所以设置堆管理是很重要的。 小结 1) C语言程序的数据存储管理 允许递归调用 使用活动记录 2) PASCAL语言程序的数据存储管理 允许递归调用和过程嵌套定义 使用带有DISPLAY表的活动记录,全局DISPLAY表首地址是调用过程的DISPLAY表首地址 第九章 运行时存储空间的组织和管理 一、数据的存储单元 编译程序必须为目标程序的运行分配数据的 存储单元。 如:变量、常量单元,临时工作单元,返回地址 若无存放数据信息的单元,则目标程序将无法运行。 二、存储单元分配策略 1、静态存储分配 在编译时就可以完全为数据项目分配存储单元,称为静态存储分配。 注:若一个程序设计语言不允许递归调用,而且不含有可变数组,则可使用静态存储分配策略。 2、动态存储分配 在运行时才能进行数据存储单元分配,称为动态存储分配。 注:1)若某程序设计语言允许过程递归调用,而且允许使用可变数组,那么在编译时就不可能完全为其数据项目分配存储单元,必须采取动态存储分配策略。 2)动态分配数据单元时一般使用: 栈式存储分配 堆式存储分配 2、动态存储分配 (1)栈式存储分配 运行时,每进入一个过程,就在栈顶为该过程分配一块数据区,一旦退出该过程,它所占的空间也退还给系统。 (2)堆式存储分配 有些语言允许用户随时动态地申请和释放存储空间,但申请和释放之间不遵守先申请后释放或后申请先释放原则,故不能使用栈式存储分配,而是更复杂的动态分配策略。 这种策略是:让运行程序持有一个大的存区(堆),在申请时从堆中取一块,释放时将一块存储区退还给堆。 栈式存储管理 一、允许过程(函数)递归调用的数据存储管理 1、语言特点 允许过程(函数)的递归调用,但不允许定义嵌套的过程(函数),也不许使用可变数组。如C语言。 2、栈式存储分配: 每进入一个过程,就有相应的数据区建立在栈顶。当程序开始运行前,用于建造数据区的栈是空栈。当开始进入主程序执行语句前,便在栈中建立全局变量和主程序数据
您可能关注的文档
- 2015北京邮电大学信息及通信工程学院考博参考书、真题、报录比、复试分数线、考博大纲、资料笔记、招生目录.pdf
- 机房与配套工程建设方案.doc
- 卡氏水分仪的技术简介.pdf
- 测试技术 第一章 信号分类与其描述1.pdf
- 张国庆行政管理学概论_副本.doc
- 平凉市专业的技术人员继续教育在线考试试题答案.doc
- 时间管理能力资料.doc
- 新版GMP质量管理基础资料.pptx
- 生产和作业管理的简介.ppt
- 水工专业杂用水泵的技术规范(最终).doc
- 广西百色市2023-2024学年高三第四次模拟考试英语试卷含解析.doc
- 云南峨山彝族自治县第一中学2024-2025学年高三第三轮考试语文试题含解析.doc
- 廊坊市重点中学2024届高考全国统考预测密卷语文试卷含解析.doc
- 辽宁省铁岭市第一高级中学2024年高三下学期第五次调研考试生物试题含解析.doc
- 梅州市重点中学2024年高考英语必刷试卷含解析.doc
- 西安理工大学高科学院《混凝土无损检测与质量控制》2023-2024学年第一学期期末试卷.doc
- 2025届西北工业大学附属中学高三下学期期末考试生物试题(理,A卷)含解析.doc
- 河北省永年二中2024届高考临考冲刺历史试卷含解析.doc
- 医务人员职业道德准则2025 年版测试题及答案.docx
- 医务人员职业道德准则2025年版政策解读及全文学习.pptx
文档评论(0)