操作系统实验四实验报告动态分区分配算法.docx

上传人:b****6 文档编号:11923739 上传时间:2023-06-03 格式:DOCX 页数:13 大小:42.89KB
下载 相关 举报
操作系统实验四实验报告动态分区分配算法.docx_第1页
第1页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第2页
第2页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第3页
第3页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第4页
第4页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第5页
第5页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第6页
第6页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第7页
第7页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第8页
第8页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第9页
第9页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第10页
第10页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第11页
第11页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第12页
第12页 / 共13页
操作系统实验四实验报告动态分区分配算法.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

操作系统实验四实验报告动态分区分配算法.docx

《操作系统实验四实验报告动态分区分配算法.docx》由会员分享,可在线阅读,更多相关《操作系统实验四实验报告动态分区分配算法.docx(13页珍藏版)》请在冰点文库上搜索。

操作系统实验四实验报告动态分区分配算法.docx

操作系统实验四实验报告动态分区分配算法

操作系统实验四

【实验题目】:

动态分区分配算法

【实验学时】:

4学时

【实验目的】

通过这次实验,加深对动态分区分配算法的理解,进一步掌握首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的实现方法。

【实验内容及要求】

问题描述:

设计程序模拟四种动态分区分配算法:

首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的工作过程。

假设内存中空闲分区个数为n,空闲分区大小分别为P1,…,Pn,在动态分区分配过程中需要分配的进程个数为m(m≤n),它们需要的分区大小分别为S1,…,Sm,分别利用四种动态分区分配算法将m个进程放入n个空闲分区,给出进程在空闲分区中的分配情况。

程序要求:

1)利用首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法四种动态分区分配算法模拟分区分配过程。

2)模拟四种算法的分区分配过程,给出每种算法进程在空闲分区中的分配情况。

3)输入:

空闲分区个数n,空闲分区大小P1,…,Pn,进程个数m,进程需要的分区大小S1,…,Sm。

4)输出:

首次适应算法,循环首次适应算法,最佳适应算法,最坏适应算法,最终内存空闲分区的分配情况。

实现源代码:

#include

#include

#include

#include

#definemax100

usingnamespacestd;

intwork_num;

intzone_num;

structData{

intdata;

charname;

};

Data*d=newData[max];

structTable{

intdata;

chararray[max];

intlength;

};

Table*T=newTable[max];

Table*temp=newTable[max];

voidInit()

{

ifstreaminf("DTFQ.txt");

inti,j;

charch;

inf>>work_num;

cout<<"作业数:

"<

inf>>zone_num;

cout<<"空闲分区数:

"<

cout<<"作业为:

";

for(j=0;j

{

inf.get(ch);

d[j].name=ch;

cout<

}

cout<

cout<<"作业大小:

";

for(i=0;i

{

inf>>d[i].data;

cout<

}

cout<

cout<<"空闲分区:

";

for(j=0;j

{

inf>>T[j].data;

temp[j].data=T[j].data;

T[j].length=0;

temp[j].length=0;

cout<

}

cout<

}

voidrenew()

{

intj;

for(j=0;j

{

T[j].data=temp[j].data;

T[j].length=temp[j].length;

}

}

voidre()

{

inti;

for(i=0;i

{

T[i].array[T[i].length]='#';

}

}

voidshow()

{

inti,j;

re();

for(i=0;i

{

if(T[i].data==temp[i].data)

cout<

else

{

cout<

:

right)<

(1);

for(j=0;j

{

if(T[i].array[j]=='#')

break;

else

cout<

:

right)<

}

}

}

cout<

}

voidfirst_fit()

{

renew();

cout<<"fistfit:

";

inti,j;

inttag=0;

for(i=0;i

{

for(j=0;j

{

if(d[i].data<=T[j].data)

{

T[j].data=T[j].data-d[i].data;

T[j].array[T[j].length]=d[i].name;

T[j].length++;

tag=0;

break;

}

else

tag=1;

}

if(tag==1)

{

cout<<"作业太大,无满足条件分区!

"<

break;

}

}

//re();

}

voidnext_fit()

{

renew();

cout<<"nextfit:

";

inti,j;

intm=0,tag=0,count=0;

for(i=0;i

{

for(j=m;j

{

if(d[i].data<=T[j].data)

{

T[j].data=T[j].data-d[i].data;

T[j].array[T[j].length]=d[i].name;

T[j].length++;

tag=0;

m=j;

break;

}

else

{

tag=1;

count++;

}

}

while(tag==1&&count

{

for(j=0;j

{

if(d[i].data<=T[j].data)

{

T[j].data=T[j].data-d[i].data;

T[j].array[T[j].length]=d[i].name;

T[j].length++;

tag=0;

break;

}

else

{

tag=1;

count++;

}

}

}

if(tag==1&&count==zone_num)

{

cout<<"作业太大,无满足条件分区!

"<

break;

}

}

//re();

}

voidbest_fit()

{

renew();

cout<<"bestfit:

";

inti,j,k,temp,m;

inttag=0,n=0;

for(i=0;i

{

for(j=0;j

{

if(d[i].data<=T[j].data)

{

temp=T[j].data;

m=j;

inttag1=0;

for(k=m+1;k<=zone_num;k++)

{

if(T[k].data

{

if(T[k].data>=d[i].data)

{

temp=T[k].data;

n=k;

tag1=1;

}

}

elseif(tag1==0)

n=j;

}

T[n].data=temp-d[i].data;

T[n].array[T[n].length]=d[i].name;

T[n].length++;

tag=0;

break;

}

else

tag=1;

}

if(tag==1)

{

cout<<"作业太大,无满足条件分区!

"<

break;

}

}

//re();

}

voidworst_fit()

{

renew();

cout<<"worstfit:

";

inti,j,k,temp,m;

inttag=0,n=0;

for(i=0;i

{

for(j=0;j

{

if(d[i].data<=T[j].data)

{

inttag1=0;

temp=T[j].data;

m=j;

for(k=m+1;k<=zone_num;k++)

{

if(T[k].data>temp)

{

if(T[k].data>=d[i].data)

{

temp=T[k].data;

n=k;

tag1=1;

}

}

elseif(tag1==0)

n=j;

}

T[n].data=temp-d[i].data;

T[n].array[T[n].length]=d[i].name;

T[n].length++;

tag=0;

break;

}

else

tag=1;

}

if(tag==1)

{

cout<<"作业太大,无满足条件分区!

"<

break;

}

}

//re();

}

voidmain()

{

Init();

first_fit();

show();

next_fit();

show();

best_fit();

show();

worst_fit();

show();

system("pause");

}

实验截图:

如有侵权请联系告知删除,感谢你们的配合!

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2