1实验一先来先服务FCFS和短作业优先SJF进程调度算法(2)

2019-04-21 15:17

void FCFS(int n); //先来先服务 void SJF(int n); //短作业优先 void print(int n,int array[]); void print(int n,double array[]); void printproceed(int n); //输出FCFS进程运行状态

void main() { int n,i,j; //n:进程数;i、j:循环计数变量 ifstream in(\读文件 string s; for(i=0;i<3,getline(in,s);i++) { //当i=0读入进程数n ;i=1读入各进程到达时间 ;i=2读入各进程服务时间 istringstream sin(s); switch(i) { case 0: sin>>n; break; case 1: for(j=0;j>ArrivalTime[j]; break; case 2: for(j=0;j>ServiceTime[j]; break; } } //显示各进程数据 cout<2 关闭-->0

cout<<\请选择算法: FCFS-->1 SJF-->2 退出-->0\选择:\ int choice; cin>>choice; while(choice!=0) //直到输入值为0跳出循环,结束程序 { while(choice!=1 && choice !=2 && choice!=0 ) { cout<<\ cin>>choice; } if(choice==0) return; if(choice==1) FCFS(n); //进行先来先服务FCFS算法 else SJF(n); //进行短作业优先服务SJF算法 cout<1 SJF-->2 退出-->0\选择:\ cin>>choice; } return; }

//------------------先来先服务---------------------------------------- void FCFS(int n) { //第一个进程先服务 FinishTime[0]=ArrivalTime[0]+ServiceTime[0]; WholeTime[0]=FinishTime[0]-ArrivalTime[0]; WeightWholeTime[0]=double(WholeTime[0])/double(ServiceTime[0]); for(int i=1;iArrivalTime[i]) FinishTime[i]=FinishTime[i-1]+ServiceTime[i];//如果上一个进程的完成时间大于下一个进程的到达时间, //那么下一个进程的开始时间从上一个进程的完成时间开始 else FinishTime[i]=ArrivalTime[i]+ServiceTime[i];//否则,下一个进程的开始时间从它本身的到达时间开始 WholeTime[i]=FinishTime[i]-ArrivalTime[i]; WeightWholeTime[i]=double(WholeTime[i])/double(ServiceTime[i]);

} double totalWT=0,totalWWT=0; for(int j=0;j

//------------------短作业优先-------------------------------- void SJF(int n) { int Short; //存放当前最短作业的序号 int Finish=0; //存放当前完成时间 double totalWT=0,totalWWT=0; for(int a=0;a

}

} } if(tag==1) { //找到短作业 FinishTime[Short]=Finish+ServiceTime[Short]; } if(tag==0) { //未找到 for(int k=0;k

for(i=0;i

{ //计算周转时间、带权周转时间 WholeTime[i]=FinishTime[i]-ArrivalTime[i]; WeightWholeTime[i]=double(WholeTime[i])/double(ServiceTime[i]); }

for(int j=0;j

{ //计算总的周转时间、总的带权周转时间 totalWT+=WholeTime[j]; totalWWT+=WeightWholeTime[j]; }

AverageWT_FCFS=totalWT/double(n); AverageWWT_FCFS=totalWWT/double(n);

//输出各值

cout<<\短作业优先SJF--------------\cout<<\完成时间:\print(n,FinishTime); cout<<\周转时间:\print(n,WholeTime); cout<<\带权周转时间:\print(n,WeightWholeTime);

cout<<\平均周转时间:\

cout<<\平均带权周转时间:\printproceed(n);

void print(int n,int array[]) { //打印int型数组 for(int i=0;ivoid print(int n,double array[]) { //打印double型数组 for(int i=0;ivoid printproceed(int n)

{ //打印各时刻各进程的运行情况 char ch='A'; for(int i=0;i


1实验一先来先服务FCFS和短作业优先SJF进程调度算法(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国平安LASS基础性向测评

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: