操作系统实验最佳适应算法最坏适应算法Word格式文档下载.docx

上传人:b****5 文档编号:18000436 上传时间:2022-12-12 格式:DOCX 页数:16 大小:373.45KB
下载 相关 举报
操作系统实验最佳适应算法最坏适应算法Word格式文档下载.docx_第1页
第1页 / 共16页
操作系统实验最佳适应算法最坏适应算法Word格式文档下载.docx_第2页
第2页 / 共16页
操作系统实验最佳适应算法最坏适应算法Word格式文档下载.docx_第3页
第3页 / 共16页
操作系统实验最佳适应算法最坏适应算法Word格式文档下载.docx_第4页
第4页 / 共16页
操作系统实验最佳适应算法最坏适应算法Word格式文档下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

操作系统实验最佳适应算法最坏适应算法Word格式文档下载.docx

《操作系统实验最佳适应算法最坏适应算法Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《操作系统实验最佳适应算法最坏适应算法Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。

操作系统实验最佳适应算法最坏适应算法Word格式文档下载.docx

charname[10];

intstart;

intsize;

intstate=0;

}pcb;

主要函数:

voidfind_free_rom();

//寻找空闲区

voidsort1();

//对空闲区进行排序从小到大

//对空闲区进行排序从大到小

voidshow();

//显示函数

voidinsert_pcb1(pcb&

a);

//最佳适应算法

voidinsert_pcb2(pcb&

//最坏适应算法

voidinit();

//初始化函数

算法流程图:

最佳适应算法:

最坏适应算法:

#include<

stdio.h>

string.h>

#defineN1024

boolROM[N];

intp=0;

intcount=0;

intfree_rom_counter=0;

//空闲区数目

typedefstructPcb//进程结构体

//大小

//状态

pcbnum[20];

//进程数组

typedefstructFree_rom//空闲区结构体

intnum;

intend;

intspace;

//空闲区大小

}Free_room;

Free_romfree_rom[100];

//空闲区数组

voidshow()//显示空闲区信息

printf("

****************************************************************\n\n"

);

空闲区名\t开始地址\t\t大小\t\t结束地址\t\t\n"

for(inti=1;

i<

=free_rom_counter;

i++)

%d\t\t%d\t\t\t%d\t\t%d\t\t\n"

free_rom[i].num,free_rom[i].start,free_rom[i].space,free_rom[i].end);

\n"

}

voidfind_free_rom()//寻找空闲区,更新空闲区数组

free_rom_counter=0;

inti,j,p;

for(i=0;

N;

if(ROM[i]==0)

{

p=i;

for(j=i;

j<

j++)

if(ROM[j]==0)

i=j;

continue;

}

if(ROM[j]==1)//找到就更新信息

free_rom_counter++;

free_rom[free_rom_counter].num=free_rom_counter;

free_rom[free_rom_counter].start=p;

free_rom[free_rom_counter].end=j-1;

free_rom[free_rom_counter].space=j-p;

i=j+1;

break;

if(j==N&

&

ROM[j-1]==0)//对最后一个内存进行特殊处理

voidsort1()//最佳适应算法对空闲区从小到大排序

find_free_rom();

Free_roma;

for(inti=1;

free_rom_counter;

for(intj=1;

if(free_rom[j].space>

free_rom[j+1].space)

a=free_rom[j];

free_rom[j]=free_rom[j+1];

free_rom[j+1]=a;

voidsort2()//最坏适应算法对空闲区从大到小排序

if(free_rom[j].space<

voidinit()//初始化

for(inti=0;

ROM[i]=0;

voidinput(pcb&

a)//输入

输入进程名\n"

scanf("

%s"

&

a.name);

输入进程大小\n"

%d"

a.size);

a)//最佳适应算法插入进程

sort1();

inti,j,k;

for(i=1;

=free_rom_counter;

i++)//判断插入

if(a.size<

=free_rom[i].space)

for(j=free_rom[i].start;

free_rom[i].start+a.size;

ROM[j]=1;

a.state=1;

a.start=free_rom[i].start;

num[count++]=a;

if(i==free_rom_counter+1)//插入失败

可用空间不足!

a)//最坏适应算法插入{

find_free_rom();

sort2();

inti,j,k;

for(i=1;

j++)//寻找

if(i==free_rom_counter+1)//插入失败

voidDelete(pcb&

a)//内存中释放进程

inti;

for(i=a.start;

a.start+a.size;

//更新内存信息,更新进程状态数组

a.state=0;

删除成功\n"

intmain()//主函数

init();

intchoose1;

intchoose;

1、最佳适应算法\n"

//主界面

2、最坏首次适应算法\n"

choose1);

pcba;

do

\n\n1、插入进程\n"

2、删除进程\n"

3、显示进程信息\n"

4、显示空余内存信息\n"

choose);

if(choose==1)//选择

input(a);

if(choose1==1)

insert_pcb1(a);

elseinsert_pcb2(a);

elseif(choose==2)

输入删除进程的名字\n"

name);

count;

if(!

strcmp(num[i].name,name))

Delete(num[i]);

elseif(choose==3)

进程名\t\t开始地址\t\t大小\t\t结束地址\t\t\n"

//输出内存信息

if(num[i].state!

=0)

%s\t\t%d\t\t\t%d\t\t%d\t\t\n"

num[i].name,num[i].start,num[i].size,num[i].size+num[i].start-1);

\n****************************************************************\n\n"

elseif(choose=4)

show();

elsebreak;

while

(1);

return0;

截图:

构造如下空闲区:

此时插入一个进程G,大小为80H,应插入到第二块空闲区

再插入一个大小为30的进程H,应插入到第三块中

再插入一个小进程,大小为5,插入到第二块空闲区,查看进程信息和空闲区信息:

最佳适应算法成立。

插入一个大小为80的进程G,插入到第一块空闲区。

在插入一个大小为20的进程H,插入到第三块空闲区。

再插入一个大小为20的进程,插入到第三块空闲区。

最坏适应算法成立。

【小结或讨论】

1、本次实验涉及到两个表,空闲区登记表和进程分配表,分配空间需要进程所需空间的大小,给出过分配后进程的起始地址;

回收空间除了需要进程所需空间的大小以外,还需要知道进程的起始地址,再进行一系列判断然后回收。

2、本次实验的两个算法是在首次适应算法的基础上进行的改进,最佳适应算法是将所有区按照区的大小进行升序排列,再从第一个区即最小的区开始检索分配内存;

最坏适应算法是将所有区按照区的大小进行降序排列,再直接将第一个区即最大的区给进程分配空间。

3、最坏适应算法较最佳适应算法简单一些,只需要一层for循环,只跟第一个区大小进行比较即可。

4、通过本次实验,我对于主存空间的动态分配与回收有了进步的理解。

掌握了最佳适应算法和最坏适应算法的中心思想。

最佳适应算法是首先将主存空闲空间大小进行排序,找到最适合的一个空间分配。

但看似充分利用了空闲空间,但导致剩余的空间过于小而导致无法使用。

而最坏适应算法与其恰恰相反。

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

当前位置:首页 > 成人教育 > 电大

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

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