先来先服务和短作业优先调度算法.docx

上传人:b****4 文档编号:3937058 上传时间:2023-05-06 格式:DOCX 页数:24 大小:144.18KB
下载 相关 举报
先来先服务和短作业优先调度算法.docx_第1页
第1页 / 共24页
先来先服务和短作业优先调度算法.docx_第2页
第2页 / 共24页
先来先服务和短作业优先调度算法.docx_第3页
第3页 / 共24页
先来先服务和短作业优先调度算法.docx_第4页
第4页 / 共24页
先来先服务和短作业优先调度算法.docx_第5页
第5页 / 共24页
先来先服务和短作业优先调度算法.docx_第6页
第6页 / 共24页
先来先服务和短作业优先调度算法.docx_第7页
第7页 / 共24页
先来先服务和短作业优先调度算法.docx_第8页
第8页 / 共24页
先来先服务和短作业优先调度算法.docx_第9页
第9页 / 共24页
先来先服务和短作业优先调度算法.docx_第10页
第10页 / 共24页
先来先服务和短作业优先调度算法.docx_第11页
第11页 / 共24页
先来先服务和短作业优先调度算法.docx_第12页
第12页 / 共24页
先来先服务和短作业优先调度算法.docx_第13页
第13页 / 共24页
先来先服务和短作业优先调度算法.docx_第14页
第14页 / 共24页
先来先服务和短作业优先调度算法.docx_第15页
第15页 / 共24页
先来先服务和短作业优先调度算法.docx_第16页
第16页 / 共24页
先来先服务和短作业优先调度算法.docx_第17页
第17页 / 共24页
先来先服务和短作业优先调度算法.docx_第18页
第18页 / 共24页
先来先服务和短作业优先调度算法.docx_第19页
第19页 / 共24页
先来先服务和短作业优先调度算法.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

先来先服务和短作业优先调度算法.docx

《先来先服务和短作业优先调度算法.docx》由会员分享,可在线阅读,更多相关《先来先服务和短作业优先调度算法.docx(24页珍藏版)》请在冰点文库上搜索。

先来先服务和短作业优先调度算法.docx

先来先服务和短作业优先调度算法

《操作系统》实验一实验报告

【实验题目】:

先来先服务FCFS和短作业优先SJF进程调度算法

【实验目的】

通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。

【实验内容】

问题描述:

设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。

假设有n个进程分别在T1,…,Tn时刻到达系统,它们需要的服务时间分别为S1,…,Sn。

分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。

程序要求如下:

1)进程个数n;每个进程的到达时间T1,…,Tn和服务时间S1,…,Sn;选择算法1-FCFS,2-SJF。

2)要求采用先来先服务FCFS和短作业优先SJF分别调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间;

3)输出:

要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:

进程B开始运行”等等;

4)输出:

要求输出计算出来的每个进程的周转时间,带权周转时间,所有进程的平均周转时间,带权平均周转时间。

【实验过程】

#include

usingnamespacestd;

#defineMaxNum100

intArrivalTime[MaxNum];

doubleServiceTime[MaxNum];

doubleFinishTime[MaxNum];

doubleWholeTime[MaxNum];

doubleAVEWholeTime[MaxNum];

doubleAVEWeightWholeTime[MaxNum];

doubleWeightWholeTime[MaxNum];

doubleAverageWT_FCFS,AverageWT_SJF;

doubleAverageWWT_FCFS,AverageWWT_SJF;

doubleAllTime,WeightAllTime;

doublea[MaxNum];

intb[MaxNum];

intc[MaxNum];

intd[MaxNum];

voidFCFS();

voidSJF();

voidFCFS()

{

intProcessNum;

cout<<"----------先来先服务算法----------"<

cout<<"请输入进程个数:

";

cin>>ProcessNum;

cout<<"输入进程到达时间:

";

cout<

for(inti=0;i

{

cin>>ArrivalTime[i];

//cout<

}

cout<

cout<<"请输入进程服务时间:

";

cout<

for(inti=0;i

{

cin>>ServiceTime[i];

//cout<

}

cout<

for(inti=0;i

{

FinishTime[i]=ServiceTime[i];

}

for(inti=0;i

{

FinishTime[i+1]=FinishTime[i]+FinishTime[i+1];

}

for(inti=0;i

{

cout<<"时刻"<

第"<

"<

}

cout<<"PCFS完成时间:

";

for(inti=0;i

{

cout<

}

cout<

cout<<"PCFS周转时间:

";

for(inti=0;i

{

WholeTime[i]=FinishTime[i]-ArrivalTime[i];

}

for(inti=0;i

{

cout<

}

cout<

cout<<"PCFS平均周转时间:

";

for(inti=0;i

{

AVEWholeTime[i]=WholeTime[i];

//cout<

}

for(inti=0;i

{

AVEWholeTime[i+1]=AVEWholeTime[i]+AVEWholeTime[i+1];

//cout<

AllTime=AVEWholeTime[i+1];

}

cout<

AverageWT_FCFS=AllTime/ProcessNum;

cout<<"平均周转时间"<

cout<<"PCFS带权周转时间:

";

for(inti=0;i

{

WeightWholeTime[i]=WholeTime[i]/ServiceTime[i];

}

for(inti=0;i

{

cout<

}

cout<

cout<<"PCFS平均带权周转时间:

";

for(inti=0;i

{

AVEWeightWholeTime[i]=WeightWholeTime[i];

//cout<

}

for(inti=0;i

{

AVEWeightWholeTime[i+1]=AVEWeightWholeTime[i]+AVEWeightWholeTime[i+1];

WeightAllTime=AVEWeightWholeTime[i+1];

//cout<

}

AverageWWT_FCFS=WeightAllTime/ProcessNum;

cout<<"平均带权周转时间"<

}

voidSJF()

{

intProcessNum;

cout<<"----------短作业优先算法----------"<

cout<<"请输入进程个数:

";

cin>>ProcessNum;

cout<<"输入进程到达时间:

";

cout<

for(inti=0;i

{

cin>>ArrivalTime[i];

//cout<

}

cout<

cout<<"请输入进程服务时间:

";

cout<

for(inti=0;i

{

cin>>ServiceTime[i];

//cout<

}

cout<

for(inti=0;i

{

a[i]=ServiceTime[i];

}

for(inti=1;i

{

doubleexchange;

for(intj=i+1;j

{

if(a[i]>a[j])

{

exchange=a[i];

a[i]=a[j];

a[j]=exchange;

}

}

}

FinishTime[0]=ServiceTime[0];

for(inti=1;i

{

//b[0]=0;

for(intj=1;j

{

if(a[i]==ServiceTime[j])

{

b[i]=j;

//cout<

break;

}

}

}

for(inti=1;i

{

//cout<

//cout<

/**

***通过下边的转换,使得完成时间小于到达时间时

***下一个进程和下下一个进程顺序交换

**/

if(FinishTime[b[i-1]]

{

//cout<

inttemp;

temp=b[i];

b[i]=b[i+1];

b[i+1]=temp;

}

//cout<

a[i]=ServiceTime[b[i]];

a[i]=a[i-1]+a[i];

//cout<

FinishTime[b[i]]=a[i];

}

for(inti=0;i

{

cout<<"时刻"<

第"<

"<

}

cout<<"SJF完成时间:

";

for(inti=0;i

{

cout<

}

cout<

cout<<"SJF周转时间:

";

for(inti=0;i

{

WholeTime[i]=FinishTime[i]-ArrivalTime[i];

}

for(inti=0;i

{

cout<

}

cout<

cout<<"SJF平均周转时间:

";

for(inti=0;i

{

AVEWholeTime[i]=WholeTime[i];

//cout<

}

for(inti=0;i

{

AVEWholeTime[i+1]=AVEWholeTime[i]+AVEWholeTime[i+1];

//cout<

AllTime=AVEWholeTime[i+1];

}

//cout<

AverageWT_SJF=AllTime/ProcessNum;

cout<<"平均周转时间"<

cout<<"SJF带权周转时间:

";

for(inti=0;i

{

WeightWholeTime[i]=WholeTime[i]/ServiceTime[i];

}

for(inti=0;i

{

cout<

}

cout<

cout<<"SJF平均带权周转时间:

";

for(inti=0;i

{

AVEWeightWholeTime[i]=WeightWholeTime[i];

//cout<

}

for(inti=0;i

{

AVEWeightWholeTime[i+1]=AVEWeightWholeTime[i]+AVEWeightWholeTime[i+1];

WeightAllTime=AVEWeightWholeTime[i+1];

//cout<

}

AverageWWT_SJF=WeightAllTime/ProcessNum;

cout<<"平均带权周转时间"<

}

voidmain()

{

charflag='Y';

charn;

cout<<"----------调度算法FCFS&&SJF-----------"<

while(flag=='Y'||flag=='y')

{

cout<

cout<<"1、先来先服务FCFS算法."<

cout<<"2、短作业优先SJF算法."<

cout<<"请您选择算法的序号:

"<

cin>>n;

switch(n)

{

case'1':

FCFS();

break;

case'2':

SJF();

break;

default:

cout<

cout<<"您输出有误!

"<

break;

}

cout<

cout<<"是否继续调度算法FCFS&&SJF,按'Y'or'y'钮继续,按照'N'or'n'键退出"<

cin>>flag;

}

}

【实验结果】

先来先服务算法

短作业优先算法

#include

usingnamespacestd;

#defineMaxNum100

intArrivalTime[MaxNum];

doubleServiceTime[MaxNum];

doubleFinishTime[MaxNum];

doubleWholeTime[MaxNum];

doubleAVEWholeTime[MaxNum];

doubleAVEWeightWholeTime[MaxNum];

doubleWeightWholeTime[MaxNum];

doubleAverageWT_FCFS,AverageWT_SJF;

doubleAverageWWT_FCFS,AverageWWT_SJF;

doubleAllTime,WeightAllTime;

doublea[MaxNum];

intb[MaxNum];

intc[MaxNum];

intd[MaxNum];

voidFCFS();

voidSJF();

voidFCFS()

{

intProcessNum;

printf("----------先来先服务算法----------");

printf("请输入进程个数:

");

scanf("%d",&ProcessNum);

printf("输入进程到达时间:

");

printf("\n");

for(inti=0;i

{

scanf("%d"&ArrivalTime[i]);

}

printf("\n");

cout<<"请输入进程服务时间:

";

printf("\n");

for(i=0;i

{

cin>>ServiceTime[i];

}

printf("\n");

for(i=0;i

{

FinishTime[i]=ServiceTime[i];

}

for(i=0;i

{

FinishTime[i+1]=FinishTime[i]+FinishTime[i+1];

}

for(i=0;i

{

cout<<"时刻"<

第"<

"<

}

cout<<"PCFS完成时间:

";

for(i=0;i

{

cout<

}

printf("\n");

cout<<"PCFS周转时间:

";

for(i=0;i

{

WholeTime[i]=FinishTime[i]-ArrivalTime[i];

}

for(i=0;i

{

cout<

}

printf("\n");

cout<<"PCFS平均周转时间:

";

for(i=0;i

{

AVEWholeTime[i]=WholeTime[i];

}

for(i=0;i

{

AVEWholeTime[i+1]=AVEWholeTime[i]+AVEWholeTime[i+1];

AllTime=AVEWholeTime[i+1];

}

cout<

AverageWT_FCFS=AllTime/ProcessNum;

cout<<"平均周转时间"<

cout<<"PCFS带权周转时间:

";

for(i=0;i

{

WeightWholeTime[i]=WholeTime[i]/ServiceTime[i];

}

for(i=0;i

{

cout<

}

printf("\n");

cout<<"PCFS平均带权周转时间:

";

for(i=0;i

{

AVEWeightWholeTime[i]=WeightWholeTime[i];

}

for(i=0;i

{

AVEWeightWholeTime[i+1]=AVEWeightWholeTime[i]+AVEWeightWholeTime[i+1];

WeightAllTime=AVEWeightWholeTime[i+1];

}

AverageWWT_FCFS=WeightAllTime/ProcessNum;

cout<<"平均带权周转时间"<

}

voidSJF()

{

intProcessNum;

cout<<"----------短作业优先算法----------"<

cout<<"请输入进程个数:

";

cin>>ProcessNum;

cout<<"输入进程到达时间:

";

printf("\n");

for(inti=0;i

{

cin>>ArrivalTime[i];

}

printf("\n");

cout<<"请输入进程服务时间:

";

printf("\n");

for(i=0;i

{

cin>>ServiceTime[i];

}

printf("\n");

for(i=0;i

{

a[i]=ServiceTime[i];

}

for(i=1;i

{

doubleexchange;

for(intj=i+1;j

{

if(a[i]>a[j])

{

exchange=a[i];

a[i]=a[j];

a[j]=exchange;

}

}

}

FinishTime[0]=ServiceTime[0];

for(i=1;i

{

for(intj=1;j

{

if(a[i]==ServiceTime[j])

{

b[i]=j;

break;

}

}

}

for(i=1;i

{

if(FinishTime[b[i-1]]

{

inttemp;

temp=b[i];

b[i]=b[i+1];

b[i+1]=temp;

}

a[i]=ServiceTime[b[i]];

a[i]=a[i-1]+a[i];

FinishTime[b[i]]=a[i];

}

for(i=0;i

{

cout<<"时刻"<

第"<

"<

}

cout<<"SJF完成时间:

";

for(i=0;i

{

cout<

}

printf("\n");

cout<<"SJF周转时间:

";

for(i=0;i

{

WholeTime[i]=FinishTime[i]-ArrivalTime[i];

}

for(i=0;i

{

cout<

}

printf("\n");

cou

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

当前位置:首页 > 自然科学 > 物理

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

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