下载此文档

fcfs和sjf调度算法1.doc


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
以下参考的别人的:FCFS和SJF调度算法思想和实现算法算法思想:设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。假设有n个进程分别在T1,…,Tn时刻到达系统,它们需要的服务时间分别为S1,…,Sn。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。源程序:#include<>#include<>onstintN=100;intarrivalTime[N];//到达时间intserviceTime[N];//服务时间intfinishTime[N];//完成时间intWholeTime[N];//周转时间doubleWeightWholeTime[N];//带权周转时间doubleaverageWT,averageWWT;//平均周转时间intserviceTime_SJF[N];intn=0;intnowTime=0;//记录当前时间inti;voidFCFS(){ cout<<"\n=========================FCFS调度算法=========================\n"; for(i=0;i<n;i++) { if(arrivalTime[i]>nowTime) nowTime=arrivalTime[i]; nowTime+=serviceTime[i]; finishTime[i]=nowTime; } for(inti=0;i<n;i++) WholeTime[i]=finishTime[i]-arrivalTime[i]; for(inti=0;i<n;i++) WeightWholeTime[i]=(double)WholeTime[i]/(double)serviceTime[i]; for(inti=0;i<n;i++) { averageWT+=(double)WholeTime[i]/n; averageWWT+=(double)WeightWholeTime[i]/n; }}voidSJF(){cout<<"\n==========================SJF调度算法=========================\n"; intmin=0; nowTime=arrivalTime[0]+serviceTime[0]; finishTime[0]=nowTime; serviceTime_SJF[0]=100; intallin=0,j,k; for(i=1;i<n;i++) { k=1; min=0; if(allin==0) { j=0; while(arrivalTime[j]<=nowTime&&j<n) { j++; if(j>n) allin=1; } } else j=n; j=j-1; while(k<=j) { if(serviceTime_SJF[k]==0) k++; else { if(serviceTime_SJF[min]>serviceTime_SJF[k]) min=k; k++; } } serviceTime_SJF[min]=0; nowTime+=serviceTime[min]; finishTime[min]=nowTime; } for(inti=0;i<n;i++) WholeTime[i]=finishTime[i]-arrivalTime[i]; for(inti=0;i<n;i++) WeightWholeTime[i]=(double)WholeTime[i]/(double)serviceTime[i]; averageWT=0;averageWWT=0; for(inti=0;i<n;i++) { averageWT+=(double)WholeTime[i]/n; averageWWT+=(double)WeightWholeTime[i]/n; }}voidsortOn()//进程按照到达或者服务时间进行排序 { inttemp; for(inti=0;i<n;i++) for(intk=0;k<n-i-1;k++) if(arrivalTime[k+1]<arrivalTime[k]) { temp=arrivalTime[k+1]; arrivalTime[k+1]=arrivalTime[k]; arrivalTime[k]=temp; temp=serviceTime[k+1]; serviceTime[k+1]=serviceTime[k]; serviceTime[k]=temp; } }voidinput(){ c

fcfs和sjf调度算法1 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人511709291
  • 文件大小16 KB
  • 时间2019-05-14