教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

操作系统实验报告实验四-动态分区分配算法有运行图

来源:网络收集 时间:2026-10-04
导读: 配程序执行之后的结果图 实验目的 通过这次实验,加深对动态分区分配算法的理解,进一步掌握首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的实现方法。 【实验内容】 问题描述: 设计程序模拟四种动态分区分配算法:首次适应算法、循环首次适

配程序执行之后的结果图

实验目的

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

【实验内容】

问题描述:

设计程序模拟四种动态分区分配算法:首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的工作过程。假设内存中空闲分区个数为n,空闲分区大小分别为P1, … ,Pn,在动态分区分配过程中需要分配的进程个数为m(m≤n),它们需要的分区大小分别为S1, … ,Sm,分别利用四种动态分区分配算法将m个进程放入n个空闲分区,给出进程在空闲分区中的分配情况。 程序要求如下:

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

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

3)输入:空闲分区个数n,空闲分区大小P1, … ,Pn,进程个数m,进程需要的分区大小S1, … ,Sm,算法选择1-首次适应算法,2-循环首次适应算法,3-最佳适应算法,4-最坏适应算法。

4)输出:最终内存空闲分区的分配情况。

实现提示:

配程序执行之后的结果图

用C++语言实现提示:

1)程序中变量定义参考(根据需要可添加)如下:

const int MaxNumber=100; int FreePartition[MaxNumber]; int FirstPartition[MaxNumber]; int CycleFirstPartition[MaxNumber]; int BestPartition[MaxNumber]; int WorstPartition[MaxNumber]; int ProcessNeed[MaxNumber]; int PartitionNum,ProcessNum;

2)页面置换的实现过程如下:

变量初始化;

空闲分区个数n,空闲分区大小P1, … ,Pn,进程个数m,进程需要的分区大小S1, … ,Sm,算法选择1-首次适应算法,2-循环首次适应算法,3-最佳适应算法,4-最坏适应算法;

根据用户选择的算法进行动态分区分配;

输出所有进程分配后的空闲分区分配情况。

实验要求:

1) 上机前认真复习动态分区分配算法,熟悉首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的计算过程;

2) 上机时独立编程、调试程序;

3) 根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源

配程序执行之后的结果图

程序、实例运行结果截图)。

【源程序】

头文件First.h

#include<iostream.h>

#include<string.h>

#include<iomanip.h>

#include<stdlib.h>

#define Proprintf printf("|-----+-----+-----+-----+-----+-----+-----+-----+-----|\n")

#define Myprintf printf("|++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|\n") #define MaxNum 100

typedef struct ProcessPartition_struct{

int FreePartition[MaxNum]; //空闲分区大小

char ProcessName[MaxNum]; //作业名称

int ProcessNeed[MaxNum]; //作业需求空间大小

int state[MaxNum]; //作业分配标志

int PartitionNum,ProcessNum; //空闲分区个数,作业个数

}Process;

Process p;

int i,j,k,d,temp;

char order[MaxNum][MaxNum];

char ch[MaxNum];

int m; //作业个数

int n; //空闲分区个数

int First();

int CycleFirst();

int Best();

int Worst();

int Option(); //选择算法

int Pinput(); //参数输入

int Poutput(); //结果输出

int Pinput() //参数输入

{

printf("请输入空闲分区个数:\n");

scanf("%d",&n);

printf("请依次输入空闲分区大小(KB):\n");

for(i=0;i<n;i++)

{

配程序执行之后的结果图

scanf("%d",&p.FreePartition[i]);

}

printf("请输入作业个数:\n");

scanf("%d",&m);

printf("请依次输入作业名称:\n");

for(i=0;i<m;i++)

{

scanf("%c%c",&ch[i],&p.ProcessName[i]);

}

printf("请依次输入作业大小(KB):\n");

for(i=0;i<m;i++)

{

scanf("%d",&p.ProcessNeed[i]);

p.state[i]=0;

}

Proprintf;

for(i=0;i<n;i++)

{

printf("|%3d ",p.FreePartition[i]);

}

printf("|\n");

Proprintf;

printf("作业信息如下:\n");

for(i=0;i<m;i++)

{

printf("%3c",p.ProcessName[i]);

}

printf("\n");

for(i=0;i<m;i++)

{

printf("%3d",p.ProcessNeed[i]);

}

printf("\n");

return 0;

}

int First() //首次适应算法

{

for(i=0;i<m;i++)

{

for(j=0;j<n;j++)

{

//找到第一个合适的空闲分区

if((p.ProcessNeed[i] <= p.FreePartition[j]) && (!p.state[i]))

配程序执行之后的结果图

for(k=0;k<3;k++) //记录作业分配

{

if(order[j][k]==NULL)

{

order[j][k]=p.ProcessName[i];

break;

}

else

continue;

}

p.FreePartition[j]=p.FreePartition[j]-p.ProcessNeed[i];

p.state[i]=1;

}

}

}

return 0;

}

头文件CycleFirst.h

#include<iostream.h>

#include<string.h>

#include<iomanip.h>

#include<stdlib.h>

int CycleFirst() //循环首次适应算法

{

i=0;

j=0;

while((i<n) && (j<m))

{

if((p.ProcessNeed[i] <= p.FreePartition[j]) && (!p.state[i]))

{

for(k=0;k<3;k++) //记录作业分配

{

if(order[j][k]==NULL)

{

order[j][k]=p.ProcessName[i];

break;

}

else

continue;

}

p.FreePartition[j]=p.FreePartition[j]-p.ProcessNeed[i];

p.state[i]=1;

配程序执行之后的结果图

}

else

j++;

}

return 0;

}

头文件Best.h

#include<iostream.h>

#include<string.h>

#include<iomanip.h>

#include<stdlib.h>

int Best() //最佳适应算法

{

for(i=0;i<m;i++)

{

temp=p.FreePartition[0];

k=0;

//找到第一个合适的空闲分区

while(p.ProcessNeed[i] > temp)

{

k++;

temp …… 此处隐藏:2898字,全部文档内容请下载后查看。喜欢就下载吧 ……

操作系统实验报告实验四-动态分区分配算法有运行图.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/111633.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)