存储管理动态分区分配算法的模拟Word下载.docx
- 文档编号:18338718
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:11
- 大小:18.75KB
存储管理动态分区分配算法的模拟Word下载.docx
《存储管理动态分区分配算法的模拟Word下载.docx》由会员分享,可在线阅读,更多相关《存储管理动态分区分配算法的模拟Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
四.目的:
在构思中提出要达到的目的。
(1)按照首次适应算法对内存进行分配,得到
(2)按照循环首次适应算法对内存
(3)按照最佳适应算法对内存进行分配
(4)在作业完成时,释放作业所在内存块,使其能够再次被利用
五.方案:
对构思的细化,提出粗略的方案。
(1)首次适应算法:
设立头指针,每次从头指针开始查找,进行内存分配
(2)最佳适应算法:
设立一个指针纪录最佳位置,然后根据内存大小,对最佳位置进行分配
(3)循环首次适应算法:
设立查找指针,查找指针初始为链首指针,最后位置为查找指针,返回查找指针,第二次运行时从查找指针开始查找。
将释放的空间与前后空闲状态区间合并,改写空闲区间地址和大小
六.框图:
根据方案画出框图并审核框图。
七.程序:
是实施框图的主体并运行和修改。
1.有大小恰好合适的空闲块
if(p->
data.state==Free&
&
p->
data.size==request)
{
data.state=Busy;
data.ID=ID;
returnOK;
break;
}
2.有空闲块能满足需求且有剩余"
if(p->
data.size>
request)
{
temp->
prior=p->
prior;
next=p;
data.address=p->
data.address;
prior->
next=temp;
prior=temp;
data.address=temp->
data.address+temp->
data.size;
data.size-=request;
}
3.回收内存
data.ID==ID)
data.state=Free;
data.ID=Free;
data.state==Free)//与前面的空闲块相连
data.size+=p->
next=p->
next;
next->
data.state==Free)//与后面的空闲块相连
prior=p;
八.文档:
运行环境,输入条件,输出结果,整理成文。
1.
运行环境:
操作系统
WINDOWSXP
编译软件
MicrosoftVisualC++
电脑配置:
主频3.0GHz
内存512MB
2.输入条件
作业1申请130KB
作业1申请60KB
作业1申请100KB
作业1释放130KB
作业1释放60KB
九.总结:
谈心得体会,特别是开发一个软件的体会。
开发一个软件需要有软件需求分析,软件流程图,根据流程进行软件的编写。
在编写软件时需要很好的结构感,编写的程序需要有框架,编写的程序需要补充
语句说明,让观看着更好的了解程序,使用程序。
十.附件:
完整程序
#include<
iostream.h>
stdlib.h>
#defineFree0//空闲状态
#defineBusy1//已用状态
#defineOK1
//完成
#defineERROR0//出错
#defineMAX_length640//最大内存空间为640KB
typedefintStatus;
typedefstructfreearea//定义一个空闲区说明表结构
intID;
//分区号
longsize;
//分区大小
longaddress;
//分区地址
intstate;
//状态
}ElemType;
//----------
线性表的双向链表存储结构
------------
typedefstructDuLNode//双向链表
ElemTypedata;
structDuLNode*prior;
//前趋指针
structDuLNode*next;
//后继指针
}DuLNode,*DuLinkList;
DuLinkListblock_first;
//头结点
DuLinkListblock_last;
//尾结点
Statusalloc(int);
//内存分配
Statusfree(int);
//内存回收
StatusFirst_fit(int,int);
//首次适应算法
StatusBest_fit(int,int);
//最佳适应算法
StatusNext_fit(int,int);
//循环首次适应算法
voidshow();
//查看分配
StatusInitblock();
//开创空间表
StatusInitblock()//开创带头结点的内存空间链表
block_first=(DuLinkList)malloc(sizeof(DuLNode));
block_last=(DuLinkList)malloc(sizeof(DuLNode));
block_first->
prior=NULL;
next=block_last;
block_last->
prior=block_first;
next=NULL;
data.address=0;
data.size=MAX_length;
data.ID=0;
//-----------------------分配主存-------------------------
Statusalloc(intch)
intID,request;
cout<
<
"
请输入作业(分区号):
;
cin>
>
ID;
请输入需要分配的主存大小(单位:
KB):
request;
if(request<
0||request==0)
分配大小不合适,请重试!
endl;
returnERROR;
if(ch==3)//选择循环首次适应算法
if(Next_fit(ID,request)==OK)cout<
分配成功!
elsecout<
内存不足,分配失败!
elseif(ch==2)//选择最佳适应算法
if(Best_fit(ID,request)==OK)cout<
elsecout<
else//默认首次适应算法
if(First_fit(ID,request)==OK)cout<
//------------------首次适应算法-----------------------
StatusFirst_fit(intID,intrequest)//传入作业名及申请量
//为申请作业开辟新空间且初始化
DuLinkListtemp=(DuLinkList)malloc(sizeof(DuLNode));
data.size=request;
DuLNode*p=block_first->
while(p)
{//有大小恰好合适的空闲块
{//有空闲块能满足需求且有剩余"
p=p->
//--------------------
最佳适应算法
------------------------
StatusBest_fit(intID,intrequest)//传入作业名及申请量
intch;
//记录最小剩余空间
DuLNode*q=NULL;
//记录最佳插入位置
while(p)//初始化最小空间和最佳位置
(p->
request||p->
data.size==request))
q=p;
ch=p->
data.size-request;
{//空闲块大小恰好合适
{//空闲块大于分配需求
data.size-request<
ch)//剩余空间比初值还小
//更新剩余最小值
//更新最佳位置指向
if(q==NULL)returnERROR;
//没有找到空闲块
else
{//找到了最佳位置并实现分配
prior=q->
next=q;
data.address=q->
q->
data.address+=request;
data.size=ch;
//--------------------循环首次适应算法
StatusNext_fit(intID,intrequest)//传入作业名及申请量
staticDuLNode*p=block_first->
//定义静态指针变量
data.size<
request)p=block_first->
//-----------------------
主存回收
--------------------
Statusfree(intID)
DuLNode*p=block_first;
//---------------
显示主存分配情况------------------
voidshow()
+++++++++++++++++++++++++++++++++++++++\n"
+++
主存分配情况
+++\n"
分区号:
data.ID==Free)cout<
Free"
p->
data.ID<
起始地址:
data.address<
分区大小:
KB"
状
态:
data.state==Free)cout<
空
闲"
已分配"
--------------"
//-----------------------主
函
数---------------------------
voidmain()
loop:
//算法选择标记
动态分区分配方式的模拟
\n"
cout<
*********************************************************\n"
**1)首次适应算法
2)最佳适应算法
3)循环首次适应算法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 管理 动态 分区 分配 算法 模拟