动态分区存储管理实验报告

动态分区存储管理实验报告

ID:29972317

大小:22.42 KB

页数:18页

时间:2018-12-25

动态分区存储管理实验报告_第1页
动态分区存储管理实验报告_第2页
动态分区存储管理实验报告_第3页
动态分区存储管理实验报告_第4页
动态分区存储管理实验报告_第5页
资源描述:

《动态分区存储管理实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划动态分区存储管理实验报告  实验报告  实验题目:__动态分区存储管理__________________________  姓名:王辉_学号:XX班级:_四班_组别:________协作者:指导教师:_赵卿______________实验概述:  【实验目的及要求】  目的:1.加深对存储管理概念的理解。  2.熟练存储管理对作业的插入和回收过程中的内存地址分配。  3.深入了解存储管理中动态分区的管理方式是如何对作业进行存放管

2、理。  要求:1.独立自主完成。  2.对已分配表和空闲表的结构体熟练操作。  3.对所给程序中存在的细节差错和不够完善的地方给予修改。  【实验原理】目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划  建立两张表,空闲表和已分配表,分别将未分配的作业和已分配好的作业放入其中。当要装入一个作业时,从空闲区表中查找标志为“未分配”的空闲区,从中找出一个能容

3、纳该作业的空闲区。如果找到的空闲区正好等于该作业的长度,则把该分区全部分配给作业。这时应该把该空闲区登记栏中的标志改为“空”,同时在已分配区表中找到一个标志为“空”的栏目登记新装入作业所占用分区的起始地址、长度和作业名。如果找到的空闲区大于作业长度,则把空闲区分成两部分,一部分用来装入作业,另外一部分仍为空闲区。  实验采用的是“最优适应”算法。最优适应算法是按作业要求挑选一个能满足作业要求的最小空闲区,这样保证可以不去分割一个大的区域,使装入大作业时比较容易得到满足。此实验为解决假如找到的一个分区可能只比作业所要求的长度略大一点的情况,这

4、时,空闲区分割后剩下的空闲区就很小,这种很小的空闲区往往无法使用,影响了主存的使用。为了一定程度上解决这个问题,如果空闲区的大小比作业要求的长度略大一点,不再将空闲区分成已分分区和空闲区两部分,而是将整个空闲区分配给作业。  【实验环境】  MicrosoftVisualC++  实验内容:  【实验方案设计】目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训

5、计划  本实验在对存储管理的动态分配时,主要是实现作业的分配和作业的回收两方面要求。在将存储器的空闲区合理分配给第一时间进入的作业时,采用最优分配算法。并对其进行了合理完善,即是将一个略大于当前作业的空闲区完全分配给当前作业。在对作业进行回收时,将作业回收后,还要合并改作业源地址相邻的上下空闲区。  【实验过程】  ?主要步骤  1.创建空闲表和已分配表。可用如下结构体来实现:  struct  {  floataddress;//已分分区起始地址  floatlength;//已分分区长度,单位为字节  charflag;//已分配区表登

6、记栏标志,用"0"表示空栏目,实验中只支持一个字符的作业名}  used_table[n];//已分配区表  struct  {  floataddress;//空闲区起始地址  floatlength;//空闲区长度,单位为字节  intflag;//空闲区表登记栏标志,用"0"表示空栏目,用"1"表示未分配  }  free_table[m];//空闲区表  2.采用最优分配算法分配作业空间,主要代码如下:目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适

7、应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划  voidallocate(charJ,floatxk)//采用最优分配算法分配xk大小的空间  {  inti,k,l;  floatad;  k=-1;  for(i=0;i=xk&&free_table[i].flag==1)  if(k==-1

8、

9、free_table[i].length=n)//无表目填写已分分区  {  printf("无表目填写已分分区错误");//修正空闲区表  if(free_table[k].f

10、lag==0)//前面找到的是整个空闲区  free_table[k].flag=1;  else//前面找到的是某个空闲区的一部分  {  free_table[k].leng

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。