动态分区分配及回收算法实验报告Word文件下载.docx

上传人:b****5 文档编号:19423480 上传时间:2023-01-06 格式:DOCX 页数:11 大小:61.70KB
下载 相关 举报
动态分区分配及回收算法实验报告Word文件下载.docx_第1页
第1页 / 共11页
动态分区分配及回收算法实验报告Word文件下载.docx_第2页
第2页 / 共11页
动态分区分配及回收算法实验报告Word文件下载.docx_第3页
第3页 / 共11页
动态分区分配及回收算法实验报告Word文件下载.docx_第4页
第4页 / 共11页
动态分区分配及回收算法实验报告Word文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

动态分区分配及回收算法实验报告Word文件下载.docx

《动态分区分配及回收算法实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《动态分区分配及回收算法实验报告Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

动态分区分配及回收算法实验报告Word文件下载.docx

(4)回收分区既不与前一个分区邻接,也不与后一个分区邻接。

另外,最佳适应算法不需要考虑多个进程,而首次适应算法需要考虑多道程序的大小,所以前两个程序只需要输入一个进程的信息,后者因为考虑多个程序的原因,所以需要输入两个进程的信息。

三、实验步骤、数据记录及处理

1、算法流程

抽象数据类型的定义:

空闲分区结构体类型和结构体链表

typedefstructfreespace

{

intnum;

//分区号

intsize;

//分区大小

intaddress;

//分区首地址

statusstate;

//分区状态,FREE和BUSY

};

typedefstructnode

freespacedata;

node*head;

node*next;

}*Linklist;

主程序的流程以及各程序模块之间的层次(调用)关系:

主函数中先调用初始化函数,再调用菜单函数引导用户选择操作和相应的算法,用switch多选择结构来判断调用firstAlloc(),bestAlloc(),display()还是recycle()。

程序流程图:

2、运行结果分析:

首次适应算法:

分配结束后的空闲分区大小和起始地址与结果相同。

大小

起始地址

30K

150K

20K

280K

112K

400K

最佳适应算法:

42K

470K

90K

210K

XX工业大学实验报告

四、总结与体会

附录:

源代码

#include<

iostream>

stdlib.h>

usingnamespacestd;

#defineMAXSIZE512

enumstatus{FREE,BUSY};

//枚举类型

Linklistfirst,last;

voidinit()

first=newnode;

last=newnode;

first->

head=NULL;

next=last;

last->

head=first;

next=NULL;

data.address=0;

data.size=MAXSIZE;

data.num=0;

data.state=FREE;

}

voiddisplay()

cout<

<

"

****************主存分配情况****************"

<

endl;

node*p=first->

next;

while(p)

{

cout<

分区号:

"

;

if(p->

data.num==0)

{

cout<

空闲区"

起始地址:

p->

data.address<

终止地址:

data.address+p->

data.size<

分区大小:

p->

data.size<

KB"

状态:

空闲"

}

else

data.num;

data.address+p->

data.size

if(p->

data.state==FREE)

cout<

else

if(p->

data.state==BUSY)

cout<

占用"

p=p->

}

**********************************************"

endl<

intfirstAlloc()//首次分配

intnum,size;

请输入作业号和分配的主存大小KB:

cin>

>

num>

size;

Linklistlist=newnode;

list->

data.num=num;

data.size=size;

data.state=BUSY;

data.state==FREE&

&

data.size==size)//有大小刚好合适的空闲块

p->

display();

return1;

data.size>

size)//有大小比他大的空闲块

list->

head=p->

head;

next=p;

data.address=p->

data.address;

head->

next=list;

head=list;

data.address=list->

data.address+list->

data.size;

data.size-=size;

display();

return0;

intbestAlloc()//最佳分配

intmin_space=MAXSIZE;

node*q=NULL;

while(p)//找到最佳位置

if((p->

size||p->

data.size==size)&

data.state==FREE)

data.size-size<

min_space)

{

q=p;

min_space=p->

data.size-size;

}

if(q==NULL)

return0;

else

if(min_space==0)

q->

head=q->

head;

next=q;

data.address=q->

data.address+=size;

intrecycle()//碎片整理

请输入你要回收存的作业号:

num;

node*p=first;

data.num==num)

data.state==FREE)//与前一块空闲区相邻,则合并

p->

data.size+=p->

next=p->

next->

data.state==FREE)//与后一块空闲区相邻,则合并

head=p;

break;

return1;

voidmenu()

********************存分配系统********************"

1.首次适应算法分配存"

2.最佳适应算法分配存"

3.查看主存分配情况"

4.回收主存"

请选择:

voidmain()

init();

intchoose;

menu();

while

(1)

//menu();

cin>

choose;

switch(choose)

case1:

firstAlloc();

case2:

bestAlloc();

case3:

case4:

recycle();

default:

输入错误!

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1