内存分区实验报告Word文档格式.docx
- 文档编号:17338516
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:7
- 大小:15.84KB
内存分区实验报告Word文档格式.docx
《内存分区实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《内存分区实验报告Word文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
用循环首次适应和最佳适应算法法模拟UNIX可变分区内存管理,实现对该内存区的分配和释放管理的功能。
三、实验原理
(1)循环首次适应算法
模拟UNIX的进程管理程序采用的是循环首次适应算法,具体算法如下:
系统每次为进程分配资源时,从上次找到的空闲分区的下一个空闲分区开始查找,直到找到一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业。
(2)循环最佳适应算法
模拟UNIX的进程管理程序采用的是最佳适应算法,具体算法如下:
系统每次为进程分配资源时,从上次找到的空闲分区的下一个空闲分区开始查找,直到找到一个能满足要求且最小的的空闲分区,从中划出一块与请求大小相等的内存空间分配给作业。
2.物理设计
(1)structWORK
{
stringNAME;
//作业名称
intAfter_SPACE;
//该作业跟上一个作业之间的空闲内存空间
intSPACE;
//需要的内存空间
intStartPoint;
//作业在内存里开始的位置
intEndPoint;
//作业在内存里结束的位置
WORK*next;
};
WORK*FWork;
//从内存开始0位置向下数第一个作业
#defineFULL_MEM640
//定义内存空间大小为640KB
四、开发环境
Vs2010
五、程序流程图,具体步骤截图与代码注释
1.程序流程图
2.代码段:
#include<
iostream>
string>
fstream>
Windows.h>
usingnamespacestd;
/*****************/
/*
定义作业类
*/
structWORK
定义基础信息*/
#defineFULL_MEM640
//总内存为640K
intstate=1;
//提示作业申请状态(1--->
申请成果;
0---->
申请失败)
intFirst_FreeSpace=640;
//内存0到第一个作业间的空闲内存(初始化状态下,为640K即为整个内存)
WORK*FWork=NULL;
//第一个作业
voidFCFS(stringFile);
voidBest_Adaptation(stringFile);
界面设计
voiddisplay_main()
cout<
<
"
请输入写有你内存申请的文件:
;
stringFile;
getline(cin,File);
system("
cls"
);
请输入你选择的算法:
endl;
1.首次适应算法"
2.最佳适应算法"
3.退出"
intn;
cin>
>
n;
switch(n)
case1:
首次适应服务"
endl<
FCFS(File);
break;
case2:
最佳适应算法"
Best_Adaptation(File);
case3:
exit(0);
}
voiddisplay()
//输出每次作业活动的结果
WORK*temp=FWork;
作业
起始位置
终止位置占用内存大小"
while(temp!
=NULL)
if(temp->
StartPoint==0)
temp->
NAME<
00"
StartPoint<
"
EndPoint<
SPACE<
else
temp=temp->
next;
Sleep(1000);
首次适应算法*/
voidFCFS(stringFile)
ifstreamifile(File,ios:
:
in);
//打开txt文件
WORK*fWork=newWORK();
WORK*CurrentWork=newWORK();
stringAction;
//作业行为(释放OR申请)
stringName;
for(;
iFile>
CurrentWork->
NAME;
)
ifile>
Action;
if(Action=="
申请"
SPACE;
Action<
kb"
if(FWork!
if(First_FreeSpace>
CurrentWork->
SPACE)
//查看内存O到第一作业间是否有足够空间存放申请的作业
fWork->
NAME=CurrentWork->
NAME;
SPACE=CurrentWork->
StartPoint=0;
First_FreeSpace=0;
EndPoint=fWork->
StartPoint+fWork->
After_SPACE=FWork->
StartPoint-fWork->
EndPoint;
//计算作业之间的空闲内存空间
next=FWork;
FWork=fWork;
for(fWork=FWork;
fWork!
=NULL;
fWork=fWork->
next)
if(fWork->
After_SPACE>
SPACE)
After_SPACE=fWork->
After_SPACE-CurrentWork->
StartPoint=fWork->
EndPoint=CurrentWork->
StartPoint+CurrentWork->
After_SPACE=0;
//新作业进入,fWork与新作业之间的空闲内存空间变为0
next=fWork->
next=CurrentWork;
CurrentWork=newWORK();
else
//第一次有作业申请或内存完全空闲时有作业申请
NAME=
After_SPACE=First_FreeSpace-fWork->
next=NULL;
iFile>
if(FWork->
NAME==CurrentWork->
NAME)
if(FWork->
SPACE==CurrentWork->
First_FreeSpace=CurrentWork->
SPACE+First_FreeSpace+FWork->
After_SPACE;
FWork=FWork->
FWork->
SPACE=FWork->
SPACE-CurrentWork->
After_SPACE+CurrentWork->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 内存 分区 实验 报告