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

  • 9
  • 0
  • 约4.7千字
  • 约 7页
  • 2019-05-08 发布于江西
  • 举报

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

实验一 先来先服务FCFS和短作业优先SJF进程调度算法 一 需求分析 【实验目的】 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 【实验内容】 问题描述: 设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。假设有n个进程分别在T1, … ,Tn时刻到达系统,它们需要的服务时间分别为S1, … ,Sn。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。 程序需求: 1)进程个数n;每个进程的到达时间T1, … ,Tn和服务时间S1, … ,Sn; 2)要求采用先来先服务FCFS和短作业优先SJF分别调度进程运行,计算每个进程的完成时间,周转时间和带权周转时间,并且计算所有进程的平均周转时间和带权平均周转时间; 4)输出:输出计算出来的每个进程的完成时间,周转时间、带权周转时间、所有进程的平均周转时间以及带权平均周转时间。 5)测试数据: 作业情况 调 度 算法 进程名 A B C D E 平均 到达时间 0 1 2 3 4 服务时间 4 3 5 2 4 FCFS (a) 完成时间 4 7 12 14 18 周转时间 4 6 10 11 14 9 带权周转时间 1 2 2 5.5 3.5 2.8 SJF (b) 完成时间 4 9 18 6 13 周转时间 4 8 16 3 9 8 带权周转时间 1 2.67 3.1 1.5 2.25 2.1 二 概要设计 1)程序中进程调度时间变量描述如下: const int MaxNum=100;//定义进程的最大总数 double ArrivalTime[MaxNum];到达时间 double ServiceTime[MaxNum]; 服务时间 double FinishTime[MaxNum]; 完成时间 double WholeTime[MaxNum]; 周转时间 double WeightWholeTime[MaxNum];带权周转时间 double AverageWT_FCFS; 定义FCFS平均周转时间 double AverageWWT_FCFS; 定义FCFS平均带权周转时间 double AverageWT_SJF; 定义SJF平均周转时间 double AverageWWT_SJF; 定义SJF平均带权周转时间 2)进程调度的实现过程如下: 变量初始化; 接收用户输入n,T1, … ,Tn,S1, … ,Sn; 按照算法进行进程调度,计算进程的完成时间、周转时间和带权周转时间; 计算所有进程的平均周转时间和平均带权周转时间; 按格式输出调度结果。 三 详细设计 1)Main函数 int main() { cout请输入进程总的个数 n(n为整数且0n=100):endl; cinn; while(n1) { cout你输入的n值不合适,请重新输入!endl; cinn; } cout请按照进程到达的时间由小到大依次输入n个进程的到达时间,以空格隔开:endl; for(int i=0;in;i++) cinArrivalTime[i]; cout请按上面的顺序依次输入各个进程的服务时间,以空格隔开:endl; for( int i=0;in;i++) cinServiceTime[i]; FCFS(ArrivalTime,ServiceTime,n);//调用FCFS子程序 SJF(ArrivalTime,ServiceTime,n); //调用SJF子程序 } 2)FCFS算法 void FCFS(double *ArrivalTime,double *ServiceTime,double n) { FinishTime[0]=ArrivalTime[0]+ServiceTime[0]; WholeTime[0]=FinishTime[0]-ArrivalTime[0]; WeightWholeTime[0]=WholeTime[0]/ServiceTime[0]; AverageWT_FCFS=WholeTime[0]; AverageWWT_FCFS=WeightWholeTime[0]; for(int i=1;in;i++) { if(FinishTime[i-1]ArrivalTime[i]||FinishTime[i-1]==ArrivalTime[i]) FinishTime[i]=FinishTime[i-1]+ServiceTime[i]; else FinishTime[i]=Ar

文档评论(0)

1亿VIP精品文档

相关文档