- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验成绩
实验
成绩
姓名
学号
华中师范大学计算机科学系 实 验 报 告 书
实验题目:内存管理、分配与回收
课程名称:
操作系统
主讲教师:
辅导教师:
课程编号:
班
级:
实验时间:
一、实验目的:
掌握内存分区管理的基本思想,理解内存分配表。
深入理解可变分区的内存分配策略,掌握首先适应算法、最佳适应算法和 最坏适应算法。
掌握内存碎片产生的途径以及解决碎片的方法——拼接技术。
实现分区的回收。
针对内存管理的相关活动,研究内存空闲队列的动态组织与管理问题,以 及在此基础上执行的内存分配与回收活动。
二、实验内容:
本实验将利用伙伴系统来组织内存空闲块队列和已使用内存块队列。从初 始化快照、某一组作业申请内存块前的快照、分配成功后的快照等状态出发, 结合内存分配原语(算法)和内存回收原语(算法)的实现,结合实际内存块 的动态分配与回收情况(某一快照),研究内存空闲块队列的组织、变化及其队 列管理方面的问题。具体内容如下:
实现内存分配算法和内存回收算法。
以伙伴系统的组织方式管理内存空闲队列和已使用内存块队列,具体的组 织策略应分别考虑首次适应策略、最佳适应策略和最坏适应策略。
考虑在某一内存使用一段时间的快照,给出一组作业的内存申请,判断该 申请是否可以被满足。
3、实验要求
分配算法中切割空闲区是从低地址开始;
需考虑门限值情况,门限值是指切割空闲区后剩下的区域若小于一个用户 给定的值时,就不切割该空闲区,统统分给申请者,这个值由用户指定;
回收算法需要考虑上邻、下邻、上下邻和不相邻四种情况。
四、实验环境:
实践平台:windows
编写环境:CodeBlocks
编译器:g++
五、实验设计原理
(1)可变分区基本思想
可变分区是指系统不预先划分固定分区,而是在装入程序时划分,使程序 分配的大小正好等于程序的需求量,且分区的个数是可变的,这样有较大的灵 活性,较之固定分区能获得更好的内存利用率。其状态如图所示:
(2)内存分配表
内存分配表由两张表格组成:一张是已分配表,记录已装入的程序在内存 中占用分区的起始地址和长度,并表之位指出占用分区的程序名;另一张是空 闲区表,记录内存中可供分配的空闲区的起始地址和长度,用标志位指出该分 区是未分配的空闲区。其基本结构如图所示:
(
3)分配策略
首次适应算法(First Fit):从空闲分区表的第一个表目起查找该表,把 最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。 为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进 行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区, 在高地址空间保留大的空闲区。
最佳适应算法(Best Fit):从全部空闲区中找出能满足作业要求的、且大 小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表 (空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个 满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。
最差适应算法(Worst Fit):从全部空闲区中找出能满足作业要求的、且 大小最大的空闲分区,从而使链表中的结点大小趋于均匀,适用于请求分配的 内存大小范围较窄的系统。为适应此算法,空闲分区表(空闲区链)中的空闲 分区按大小从大到小进行排序,自表头开始查找到第一个满足要求的自由分区 分配。该算法保留小的空闲区,尽量减少小的碎片产生。
(4)碎片拼接
采用可变分区存储管理方案后,经过一段时间的分配回收,内存中会存在 很多很小的空闲块。需要在适当时刻进行碎片整理,通过内存中移动程序,把 所有空闲碎片合并成一个连续的大空闲区且放在内存的一端,而把所有程序占 用区放在内存另一端。
(5)分区的回收
当用户执行结束后,系统要收回已经使用完毕的分区,将其记录在空闲区 表中。一般情况下应考虑四种情况:
回收分区的上邻分区是空闲的,需要将这两个相邻的空闲分区合并成一 个更大的空闲区,然后修改空闲区表。
回收分区的下邻分区是空闲的,需要将这两个相邻的空闲分区合并成一 个更大的空闲区,然后修改空闲区表。
回收分区上下邻区都是空闲的,需要将三者合并成一个更大的空闲区, 然后修改空闲表。
回收区的上邻下邻区都不是空闲的,则直接将空闲区记录在空闲表中。
五、实验详细实现过程与算法流程
(一)数据结构
1. 作业结构
本实验的重点是对内存的管理、分配与回收,所以作业的内部结构简单, 仅包含:进程名(name)、程序大小(size)和内部指针(next),其结构如图:
2. 分配表结构
本实验的分配表结构包含:进程名兼区名(name)、地址(address)、程序 大小(size)、状态(state)和内部指针(next),其结构如图:
2. 队列结构
您可能关注的文档
最近下载
- 电力电子技术阮新波习题答案.pdf VIP
- 2022年小学低段数学新课标解读心得体会(通用12篇).pdf VIP
- 2025贵州黔南州瓮安县招聘社区工作者50人考试参考试题附答案解析.docx VIP
- 统编版(2024新版)七年级上册道德与法治期末复习课件.pdf
- (完整版)动词单数第三人称练习题.pdf VIP
- 学术规范与论文写作(雨课堂)期末考试答案.docx VIP
- 《GBT27543-2011-手推升降平台搬运车》.pdf
- 办公室消防安全知识培训教育.pptx VIP
- 剪映短视频策划、拍摄、剪辑实战教程:短视频策划PPT教学课件.pptx VIP
- 河湖生态护岸工程技术导则.pdf VIP
原创力文档


文档评论(0)