可变分区存储管理实验报告程序设计思路和感悟.docVIP

可变分区存储管理实验报告程序设计思路和感悟.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可变分区存储管理实验报告程序设计思路和感悟.doc

实验题目:可变分区存储管理 一、实验目的 可变分区存储管理方式是操作系统中存储管理的重耍方式,其主耍思想是 用户作业进行连续存储,每次按照用户的请求,如果内存中有能满足用户作业 大小的空闲区,就采用不同的算法分配给用户,否则,不分配,可变分区容易 产生外零头。分区分配算法包括最佳适应算法、最坏适应算法、首次适应算法 等。 通过本实验可加深学生对存储器管理方式的把握以及分配算法的理解,并提 高程序设计的能力。 个人 PC 机 WindowsXP 操作系统 I5-2400CPU 3.10Ghz 2GB 内存 C-FreeC语言程序设计软件 三、 实验的重点和难点 可变分区的的收回 四、 实验内容 利用C语言或C++语言或Java语言实现可变分区存储管理,具体要求如下: 以一个一维数组模拟内存,数组类型为整型,共计1000个元素; 用一个单链表表示可变分区空闲表,链表每个结点表示一个空闲区,每 个结点信息包括起始地址、大小。 分区分配算法采用最佳适应算法、首次适应算法,并将算法用函数实现。 自己假设几个作业,包括作业的名称、大小,进入系统的顺序。 初始内存中没有任何作业,随着用户输入的每一个作业的到来,动态为 其分配内存。 使用的算法用户要能够随时更换。 五、 实验结果或实验代码 可变式分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需 要,并且分区个数可以调整。当要装入一个作业时,根据作业需要的内存量,查看是否有 足够的空闲空间,若有,则按需求S分割一部分给作业;若没有,则作业等待。随着作业 的装入、完成,闪存空间被分割成许多大大小小的分区。有的分区被作业占用,有的分区 空闲。例如,某时刻内存空间占用惜况如图1所示。 操作系统(10KB) 1 作业 1 (10KB) 2 作业 4 (25KB) 4 空闲区1 (20KB) 6 作业 2 (45KB) 110 空闲区2 (146KB) 图1内存空间占用情况 为了说明那些分区是空闲的,可以用来装入新作业,必须要有一张空闲区说明表,如 表1所示。 表1空闲区说明表 起始地址 长度 状态 45 K 20K 未分配 110K 146K 未分配 空表目 空表0 空表目 其中,起始地址指出个空闲区的内存起始地址,长度指出空闲区的大小。 状态(未分配:该栏目记录的是有效空闲区) 状态(空表目:没有登记信息) 由于分区个数不定,所以空闲区说明表中应该有足够的空表目项。否则造成溢出,无 法登记。 同样,再设一个己分配表,记录作业或进程的内存占用情况。 (2)当有一个新作业要求装入内存吋,必须查空闲区说明表,从中找出一个足够大的 空闲区。有时找到的空闲区可能大于作业需求量,这时应将空闲区一分为二。一个分给作 业,另外一个作为空闲区留在空闲E表中。为了尽量减少由于分割造成的碎片,尽可能分 配低地址部分的空闲区,将较大空闲区留在高地址端,以利于大作业的装入。为此在空闲 区表中,按空闲区首地址从低到高进行登记。为了便于快速查找,要不断地对表格进行紧 缩,即让“空表目”项留在表的后部。其分配框图如图2所示。 开始 申请XK内存 闲区表,输出系统中各数据 结构的值。返冋分配给作业 的内存始址 图2首次迠应算法分配框 (3)当一个作业执行完成时,作业所占用的分区应归还给系统。在归还时要考虑相邻 空闲区合并的问题。作业的释放区与空闲区的邻接分以下4种情况考虑: 释放区下邻(低地址邻接)空闲区; 释放区上邻(高地址邻接)空闲区; 释放区上下都与空闲区邻接; 释放区与空闲区不邻接。 首次适应算法回收框图如图3所示。 s=释放区始址 L=释放区长度 杳空W区说明表 (卵) \、 .7 图3首次适应算法回收框图 #include iostream.h” #include stdio.h #include stdlib.h #include conio.h #define n 10 #define m 10 #define minisize 1000struct #include iostream.h” #include stdio.h #include stdlib.h #include conio.h #define n 10 #define m 10 #define minisize 1000 struct { float address; float length; int flag; 一个字符的作业名 }used_table[n]; struct { float address; float length; int flag; 配 }free_table[ml; (4)请按首次适应算法设汁内存分配和回收程序。以表2当前使用的基础,初始化空 闲区和已分配区说明表值。设计一个作业申清队列以及作业完成后的释放

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档