操作系统实验报告实验四-动态分区分配算法有运行图
配程序执行之后的结果图
实验目的
通过这次实验,加深对动态分区分配算法的理解,进一步掌握首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的实现方法。
【实验内容】
问题描述:
设计程序模拟四种动态分区分配算法:首次适应算法、循环首次适应算法、最佳适应算法和最坏适应算法的工作过程。假设内存中空闲分区个数为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++;
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




