最坏适应算法动态分区法存储Word格式.docx
- 文档编号:15182383
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:9
- 大小:16.09KB
最坏适应算法动态分区法存储Word格式.docx
《最坏适应算法动态分区法存储Word格式.docx》由会员分享,可在线阅读,更多相关《最坏适应算法动态分区法存储Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
q=(listlink)malloc(sizeof(listNode));
if(!
q)exit(-1);
q->
next=NULL;
}//初始化
intlength(listlinkfree){
listlinkq;
q=free->
next;
intlen=0;
while(q!
=NULL){
len=len+q->
len;
q=q->
}
returnlen;
}//空闲区总长度
listlinkDelist(charname,listlink&
listlinka,b,c;
a=q->
b=q;
while(a!
if(a->
name==name){
c=a->
b->
next=c;
returna;
}
b=b->
a=a->
returnNULL;
}//按作业或进程名删除该结点
voidinsert(listlink&
q,intaddress,intlen,charname='
F'
){
listlinka=(listlink)malloc(sizeof(listNode));
a->
address=address;
len=len;
name=name;
listlinkb=q;
while(b->
next!
b->
next=a;
}//插入结点
voidsort(listlink&
listlinka,b;
inttemp1,temp2;
if(a==NULL)
return;
b=a->
while(a->
while(b!
if(a->
len<
=b->
len){
temp1=a->
address;
temp2=a->
a->
len=b->
address=b->
b->
address=temp1;
len=temp2;
}
b=b->
b=a->
}//按长度从大到小排序
listlinkfindpre(listlinkfree,intaddress){
listlinka;
a=free->
address+a->
len==address){
Delist(a->
name,free);
}//查找前连接区
listlinkfindnext(listlinkfree,intaddress,intlen){
address==address+len){
}//查找后连接区
voidfreeMemo(charname,listlink&
free,listlink&
busy){
listlinka=Delist(name,busy);
listlinkb,c;
id++;
b=findpre(free,a->
address);
c=findnext(free,a->
address,a->
len);
if(b!
=NULL&
&
c!
b->
len=a->
len+b->
len+c->
insert(free,b->
address,b->
len,id);
sort(free);
}//前连接区后连接区都存在
elseif(b==NULL&
a->
insert(free,a->
}//前连接区不存在后连接区存在
elseif(b!
c==NULL){
}//前连接区存在后连接区不存在
else{
insert(free,a->
}//前连接区不存在后连接区不存在
}//回收内存
voidrequireMemo(charname,intrequire,listlink&
if(a!
a->
len>
=require){
len-require;
len==0){
address=a->
else{
address=a->
address=a->
address+require;
sort(free);
insert(busy,address,require,name);
else
printf("
分配失败\n"
);
}//内存分配
voidvisit(listlinkfree){
inti=1;
printf("
空闲区的情况\n"
空\n"
空闲区%d起始地址:
%d长度:
%d\n"
i,a->
i++;
}//输出空闲区链表情况
voidvisit1(listlinkbusy){
a=busy->
繁忙区的情况\n"
繁忙区%d起始地址:
%d进程名:
%c\n"
len,a->
name);
}//输出繁忙区链表情况
voidshow(listlinkfree,listlinkbusy){
可变分区存储管理系统\n"
\n"
charchoice='
intrequire;
while(choice!
='
0'
----------------------------------------\n"
|1:
查看空闲区总长度|\n"
|2:
请求内存分配|\n"
|3:
回收内存|\n"
|4:
查看空闲区状态|\n"
|5:
查看繁忙区状态|\n"
|0:
退出|\n"
请输入你要执行的操作选项(0-5):
"
scanf("
\n%c"
&
choice);
switch(choice){
case'
:
{
printf("
谢谢使用本系统,欢迎下次使用\n"
break;
printf("
空闲区总长度:
length(free));
break;
2'
请输入作业或进程名:
scanf("
请输入作业或进程所需内存大小:
%d"
require);
requireMemo(name,require,free,busy);
3'
{
请输入需回收的作业或进程名:
freeMemo(name,free,busy);
4'
visit(free);
5'
visit1(busy);
default:
}//界面系统
voidmain(){
listlinkfree;
listlinkbusy;
init(free);
init(busy);
insert(free,0,640,id);
requireMemo('
S'
64,free,busy);
show(free,busy);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最坏 适应 算法 动态 分区 存储