- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
精选资料,欢迎下载
精选资料,欢迎下载
?南昌大学实验报告
学生姓名: 马江涛 学 号:8000612091 专业班级: 计算机软件 121班
实验类型:□验证□综合□设计□创新实验日期:2014-05-08 实验成绩:
【实验要求】
1、 编程实现首次适应算法和最佳适应算法的动态分区分配的分配过程和回 收过程。其中,空闲分区通过分区链来管理;在进行内存分配时,系统优先使用 空闲区低端的空间。
2、 假设初始状态下,可用内存空间为 640K,并依次有下列请求序列:
1) 作业1申请130KB
2) 作业2申请60KB
3) 作业3申请100KB
4) 作业2释放60KB
5) 作业4申请200KB
6) 作业3释放100KB
7) 作业1释放130KB
8) 作业5申请140KB
9) 作业6申请60KB
10) 作业7申请50KB
11) 作业6释放60KB
请分别用首次适应算法和最佳适应算法进行内存块的分配和回收, 要求每次
分配和回收后显示出空闲内存分区链的情况【可参考后文的实验提示】 。
3、 上机时认真的进行测试,输入不同的资源分配请求,写出实验结果;
4、 具体要求:
(1) 对你的程序关键代码处进行注释。
(2) 给出实验数据,对结果进行分析,说明对相关知识点的理解。
【实验目的】
了解动态分区分配方式中使用的数据结构和分配算法, 并进一步加深对动态
分区存储管理方式及其实现过程的理解。
【实验思路】
首次适应算法(First-fit ):当要分配内存空间时,就查表,在各空闲区中 查找满足大小要求的可用块。只要找到第一个足以满足要球的空闲块就停止查 找,并把它分配出去;如果该空闲空间与所需空间大小一样, 则从空闲表中取消
该项;如果还有剩余,则余下的部分仍留在空闲表中,但应修改分区大小和分区 始址。
最佳适应算法(Best-fit ):当要分配内存空间时,就查找空闲表中满足要 求的空闲块,并使得剩余块是最小的。然后把它分配出去,若大小恰好合适,则
直按分配;若有剩余块,则仍保留该余下的空闲分区,并修改分区大小的起始地 址。
内存回收:将释放作业所在内存块的状态改为空闲状态, 删除其作业名,设 置为空。并判断该空闲块是否与其他空闲块相连, 若释放的内存空间与空闲块相 连时,则合并为同一个空闲块,同时修改分区大小及起始地址。
【实验结果分析】
【实验提示】
你的动态分区的分配与回收,程序运行结果要可视化。可参考如下运行结果 的模式。请分析如下这个结果来自于哪一种动态分配算法??
实现可变分区的分配和回收,主要考虑的问题有三个:
第一,设计记录内存使用情况的数据表格,用来记录空闲区和作业占用的区 域;
第二,在设计的数据表格基础上设计内存分配算法;
第三,在设计的数据表格基础上设计内存回收算法。
首先,考虑第一个问题,设计记录内存使用情况的数据表格, 用来记录空间 区和作业占用的区域。
由于可变分区的大小是由作业需求量决定的,故分区的长度是预先不固定 的,且分区的个数也随内存分配和回收变动。总之,所有分区情况随时可能发生 变化,数据表格的设计必须和这个特点相适应。 由于分区长度不同,因此设计的
表格应该包括分区在内存中的起始地址和长度。 由于分配时空闲区有时会变成两 个分区:空闲区和已分分区,回收内存分区时,可能会合并空闲分区,这样如果 整个内存采用一张表格记录己分分区和空闲区, 就会使表格操作繁琐。分配内存
时查找空闲区进行分配,然后填写己分配区表,主要操作在空闲区;某个作业执 行完后,将该分区变成空闲区,并将其与相邻的空闲区合并,主要操作也在空闲 区。由此可见,内存的分配和回收主要是对空闲区的操作。 这样为了便于对内存 空间的分配和回收,就建立两张分区表记录内存使用情况, 一张表格记录作业占 用分区的“己分分区表”;一张是记录空闲区的“空闲区表”。这两张表的实现方 法一般有两种:一种是链表形式,一种是顺序表形式。在实验中,采用顺序表形 式,用数组模拟。由于顺序表的长度必须提前固定,所以无论是“已分分区表” 还是“空闲区表”都必须事先确定长度。它们的长度必须是系统可能的最大项数。
+++++++++++++++++++++++++++++++++++++++ +++ 主存分配情况 +++
+++++++++++++++++++++++++++++++++++++++ 分区号:1
起始地址:0
分区大小:130 KB
状 态:已分配 分区号:Free
起始地址: 130 分区大小: 60 KB 状 态:空 闲
分 区 号:
3
起始地址:
190
分区大小:
100 KB
状
态:
已分配
分 区 号:
Free
起始地址:
290
分区大小:
350 KB
状
态:
空闲
********************
原创力文档


文档评论(0)