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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
闲分区个数为n,空闲分区大小分别为P1,…,Pn,在动态分区分配过 程中需要分配的进程个数为m(m≤h),它们需要的分区大小分别为Si,…,Sm,分别利用四种动态分区分配算法将m个进程放入n个空 闲分区,给出进程在空闲分区中的分配情况。
程序要求:
1)利用首次适应算法、循环首次适应算法、最佳适应算法和最坏 适应算法四种动态分区分配算法模拟分区分配过程。
for(i=0;ivwork_ nu m;i++)
{ _
for(j=0;jVz one_nu m;j++)
{ _
if(d[i].dataV=T[j].data)
{
T[j].data=T[j].data-d[i].data;
T[j].array[T[j].Ie ngth]=d[i]. name;
T[j].le ngth++;
COUtVVSetW(4)VVd[j]. name;
COutVVe ndl;
COUtV<"作业大小:"; for(i=0;i<work_ nu m;i++) {_
in f>>d[i].data;
COUtVVSetW(4)<<d[i].data; }
COUtVVe ndl;
COUtVV"空闲分区:"; for(j=0;jVz one_nu m;j++) { _
cout< <"作业数:"<<work_ num VVe ndl;
in f>>z one_num;
COUtVV"空闲分区数:"VVz one_num VVe ndl;
COUtVV"作业为:";for(j=0;jVwork_ nu m;j++)
{ _
in f.get(ch);
d[j]. name=ch;
T[j].le ngth++;
tag=0;
break;
} else
{
in f>>T[j].data; temp[j].data=T[j].data; T[j].le ngth=0;
temp[j].le ngth=0;
COUtVVSetW(4)<<T[j].data; }
COUtVVe ndl;
}
void ren ew()
{
int j;
for(j=0;jVz one_nU m;j++)
{ _
for(j=m;j<z one_nu m;j++)
{
if(d[i].data<=T[j].data)
{
T[j].data=T[j].data-d[i].data;
T[j].array[T[j].le ngth]=d[i]. name;
T[j].le ngth++;
tag=0;
m=j;
break;
2)模拟四种算法的分区分配过程,给出每种算法进程在空闲分区 中的分配情况。
3)输入:空闲分区个数n,空闲分区大小Pi,…,Pn,进程个数m,进程需要的分区大小Si,…,Sm
4
坏适应算法,最终内存空闲分区的分配情况
实现源代码:
#in CludeViOStream>
#in CIUdeVfStream>
#i nclude<ioma nip>
}
else
{
tag=1;
coun t++;
}
}
while(tag==1 && coun t<z one_num)
{
for(j=0;j<m;j++)
{
if(d[i].data<=T[j].data)
{
T[j].data=T[j].data-d[i].data;
T[j].array[T[j].le ngth]=d[i]. name;
{
if(T[i].array[j]=='#')
break;
else
COUtvVSetiOSfIagS(ios::right)<<T[i].array[j];
}
}
}
COUtVVe ndl;
}
VOid first_fit()
{ _
ren ew();
COUtVV"fist fit:";
int i,j;
int tag=0;
#in CIUdeVStri ng>
#defi ne max 100
USing n amespace std;
int work_ num;
int zone_num;
StrUCt Data{
int data;
Char name;
};
Data *d=new Data[max];
StrUCt Table{
for(i=0;iVz one_nU m;i++)
{ _
if(T[i].data==temp[i].data)
COutVVSetW(4)v<T[i].data;
else
{
COUtvVSetiOSfIagS(ios::right)vvsetw(4)v<T[i].datavvsetw(1); for(j=0;j<T[i].le ngth;j++)
操作系统实验四
【实验题目】:动态分区分配算法
【实验学时】:4学时
【实验目的】
通过这次实验,加深对动态分区分配算法的理解,进一步掌握首 次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的实 现方法。
【实验内容及要求】
问题描述:
设计程序模拟四种动态分区分配算法:首次适应算法、循环首次
适应算法、最佳适应算法和最坏适应算法的工作过程。假设内存中空
{ _
T[j].data=temp[j].data;
T[j].le ngth=temp[j].le ngth;
}
}
void re()
{
int i;
for(i=0;iVz one_nU m;i++)
{ _
T[i].array[T[i].le ngth]=#;
}
}
void ShOWo
{
Hale Waihona Puke Baiduint i,j;
re();
int data;
Char array[max];
int Ien gth;
};
Table *T=new Table[max];
Table *temp=new Table[max];
void InitO
{
ifstreamin f("DTFQ.txt");
int i,j;
Char ch;
in f>>work_ num;
tag=0;
break;
}
else
tag=1;
}
if(tag==1)
{
COUtVV"作业太大,无满足条件分区!"VVe ndl;
break;
}
〃re();
}
VOid n ext_fit()
{ _
ren ew();
cout<<"next fit:";
int i,j;
int m=0,tag=0,co Un t=0; for(i=0;i<work_ nu m;i++)
相关文档
最新文档