- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实用标准文案
精彩文档
1 需求分析
1)本程序要求实现对内存的动态分配与回收的模拟,同时,在内存的分配时还必须使用首次适应算法,最后,还要显示内存块分配和回收后空闲内存分区链的情况。
2)要实现对作业的内存分配,首先要有一个对作业进行创建和分配内存的模块,其中,该模块在分配内存时要使用首次适应算法;要实现对内存的回收,要有一个内存回收的模块,其中,该模块在回收内存时要考虑内存回收的四种情况;最后,还要有一个能显示内存空闲分区链的情况的模块。
2 概要设计
1)首次适应算法的结构如图1:
图1 首次适应算法的结构图
从链首开始顺序查找
从链首开始顺序查找
空闲分区链完否?
返 回
分区大小所需大小?
分区大小-所需大小=
不可再分割大小?
从该分区中划出所需大小的新分区
将该整个分区从空闲分区链中移出
将该分区分配给相应的作业,修改有关数据
返 回
Y
继续检索下一个表项
Y
N
N
N
Y
2)数据结构:
struct Fq
{
int size,o,no;
Fq *before,*next;
};
其中,Fq表示结构体的名字(类型),size表示分区的可用空间大小,o表示该分区的状态(是否已分配),no表示该分区中的作业标志,*before表示该结点的向前指针,*next表示该结点的向后指针。
3)各种函数说明:
void alloc(int b,int no,Fq *p);
对作业no进行内存分配的功能函数;其中,参数b表示需求的内存大小,参数no表示作业的编号,参数*p表示空闲分区链的第一个非空结点的指针;
void free(Fq *c);
将地址为c的分区的内存回收;其中,参数*c表示要回收内存的结点;
void create(Fq *head);
创建新作业的子函数;其中,参数*head表示空闲分区链的链首指针;要配合函数alloc()使用;
void cha(Fq *head);
查看内存中的空闲分区链的子函数;其中,参数*head表示空闲分区链的链首指针;
void hui(Fq *head);
回收内存的子函数;其中,参数*head表示空闲分区链的链首指针;要配合函数free()使用;
3 运行环境
1)操作系统: Windows XP ( 32位 / DirectX 11 )
2)电脑: X86 兼容 台式电脑
处理器: 英特尔 Pentium(奔腾) 双核 E5300 @ 2.60GHz
内存: 2 GB
4 开发工具和编程语言
1)开发工具:Visual C++ 6.0;
2)编程语言:C++语言;
5 详细设计
1)程序结构如图2:
图2 程序结构图
主菜单
主菜单
创建新作业
alloc();内存分配
查看空闲分区链
free();内存回收
程序结束
退出
回收内存空间
2)●主菜单模块:
void main()//主函数
{
Fq *head=new Fq;head-next=new Fq;
head-next-size=MAXSIZE;
head-next-o=0;
head-next-next=NULL;
int choice=0;
do
{
cout请选择你要进行的操作:endl;
cout1、创建新作业 2、查看空闲分区链 3、回收内存空间 0、退出endl;
cinchoice;
switch(choice)
{
case 1: create(head);break;
case 2: cha(head);break;
case 3: hui(head);break;
case 0: break;
default: cout输入错误!endl;
}
}while(choice!=0);
}
●创建新作业模块:
void create(Fq *head)//创建作业子函数
{
Fq *p=head-next;p-before=head;
int no=0,b=0;
cout请输入要创建的作业的编号:;cinno;
cout请输入作业的需求空间大小:;cinb;
alloc(b,no,p); //此处调用功能函数alloc()
}
●查看空闲分区链模块:
void cha(Fq *head)//查看内存中的空闲分区链的子函数
{
Fq *p=head-next;p-before=head;
int i=0;
cout空闲分区链的情况为:endl;
while(p!=NULL)
{
if(p-o==0)
{
cout空闲分区++i p-sizeKendl;
}
p=p
您可能关注的文档
最近下载
- Unit+4+Section+A+2a-2e课件+2025-2026学年人教版(2024)英语八年级上册.pptx VIP
- 小学总务处主任述职报告PPT.pptx VIP
- Unit 4 Section A (1a~2e) 课件2025-2026学年人教版八年级英语.pptx VIP
- 世界的地形课件七年级地理上学期人教版1.pptx
- 世界的地形课件七年级地理上学期人教版2.pptx VIP
- (正式版)DB15∕T 2748-2022 《绿色电力应用评价方法》.docx VIP
- 人教版(2025) 必修第一册 Unit 2 Travelling Around Reading and Thinking课文解析&逐句翻译课件(共17张PPT))(含音频+视频).pptx VIP
- 制造业采购付款制度及流程设计.docx VIP
- 继承优良传统弘扬中国精神 (第二版).pptx VIP
- 含硅废渣综合利用项目环评(新版环评)环境影响报告表.doc
文档评论(0)