动态分区存储管理的模拟实现.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

计算机科学与工程学院学生实验报告

专业学号

课程名称

计算机科学与技术

操作系统

班级

姓名

课程类型 专业必修课

实验名称 动态分区存储管理的模拟实现

实验目的:

熟悉动态分区存储管理方式下,主存空间的分配和回收算法。

提高C语言编程能力。

实验内容:

假设主存当前状态如右表所示:

系统采用最佳适应分配算法为作业分配主存空间,而且具有紧凑技术。请编程完成以下操作:

输出此时的已分配区表和未分配区表;

装入Job3(15K),输出主存分配后的已分配区表和未分配区表;

回收Job2所占用的主存空间,输出主存回收后的已分配区表和未分配区表;

装入Job4(130K),输出主存分配后的已分配区表和未分配区表。

实验要求

数据结构参考定义如下,也可根据需要进行改进:(1)已分配区表:

#definen10 /*假定系统允许的最大作业数量为n,n值为10*/struct

{int number;int address;int length;float flag;

/*序号*/

/*已分配分区起始地址,单位为KB*/

/*已分配分区长度,单位KB*/

/*已分配区表登记栏标志,0:空表项,否则为作业名;*/

}used_table[n];(2)未分配区表:

/*已分配区表*/

#definem10 /*假定系统允许的空闲区表最大为m,m值为10*/struct

{int number;int address;int length;int flag;

}free_table[m];

/*序号*/

/*空闲区起始地址,单位为KB*/

/*空闲区长度,单位为KB*/

/*空闲区表登记栏标志,0:空表项;1:空闲区*/

/*空闲区表*/

以allocate命名主存分配所用的过程或函数(算法参考课件),要将各种情况考虑周全。

以reclaim命名主存回收所用的过程或函数(算法参考课件),要将各种情况考虑周全。

画出算法实现的N-S流程图。

程序调试、运行成功后,请老师检查。实验步骤:

分配内存,结果如下图:

回收内存,结果如下图:

合并内存,结果如下图:

4.N-S流程图:

内存分配流程图:

从头开始查表

Y

检索完否? 返回

N

分区大小 所需大小 N 继续检索下一个表项

Y

分区大小 -所需大小 = Y不可再分割大小

N

从该分区中划出所需大小的新分区

将该分区从链中移出

将该分区分配给请求者修改有关数

据结构

返回

内存回收流程图:

开始

判断空闲区上下内存情况

上为空 下为空 上下都为空 上下都不为空

将上面的空闲区合并,并回收

将下面的空闲区合并,并回收

将上下的空闲区

合并,并回收 直接将其回收

结束

附录 程序代码:

#define_CRT_SECURE_NO_WARNINGS1#includestdio.h#includestdlib.h

enumSTATE

{

Free,Busy

};

structsubAreaNode

{

int

addr;

//

起始地址

int

size;

//

分区大小

int

taskId;

//

作业号

STATEstate; //分区状态subAreaNode*pre; //分区前向指针subAreaNode*nxt; //分区后向指针

}subHead;

//初始化空闲分区链voidintSubArea()

{

//分配初始分区内存

subAreaNode*fir=(subAreaNode*)malloc(sizeof(subAreaNode));

//给首个分区赋值fir-addr=0;

fir-size=240; //内存初始大小fir-state=Free;

fir-taskId=-1;fir-pre=subHead;fir-nxt=NULL;

//初始化分区头部信息subHead.pre=NULL;subHead.nxt=fir;

}

//最佳适应算法

intbestFit(inttaskId,intsize)

{

subAreaNode*tar=NULL;inttarSize=240+1;

subAreaNode*p=subHead.nxt;while(p!=NULL)

{

//寻找最佳空闲区间

if(p-state==Freep-size=sizep-sizetarSize)

{

tar=p;

tarSize=p-size;

}

p=p-nxt;

}

if(tar!=NULL)

{

//分配大小为s

文档评论(0)

hao187 + 关注
官方认证
内容提供者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档