文档详情

FCFS与SJF算法实验报告.doc

发布:2016-12-29约1.02万字共14页下载文档
文本预览下载声明
先来先服务FCFS和短作业优先SJF 进程调度算法 学生姓名: 学生学号: 专业班级: 指导老师: 2013年6月20日 1、实验目的: 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 2、问题描述: 假设有n个进程分别在T1, … ,Tn时刻到达系统,它们需要的服务时间分别为S1, … ,Sn。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。 3、需求分析 (1) 输入的形式和输入值的范围 输入值:进程个数Num 范围:0Num=100 依次输入Num个进程的到达时间 范围: 依次输入Num个进程的服务时间 范围: 输入要使用的算法 范围:1或者2 (2) 输出的形式(X表示变量) 时刻X:进程X开始运行。 其完成时间:X 周转时间:X 带权周转时间:X …(省略(Num-1)个) 平均周转时间:X 平均带权周转时间:X (3) 程序所能达到的功能 输入进程个数Num,每个进程到达时间ArrivalTime[i],服务时间ServiceTime[i]。采用先来先服务FCFS或者短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计Num个进程的平均周转时间和平均带权周转时间。 4、概要设计 (1)程序中进程调度时间变量描述如下: (2)程序流程 变量初始化; 接收用户输入n,T1, … ,Tn,S1, … ,Sn;算法选择1-FCFS,2-SJF; 按照选择算法进行进程调度,计算进程的完成时间、周转时间和带权周转时间; 计算所有进程的平均周转时间和平均带权周转时间;按格式输出调度结果。 5、详细设计 先来先服务算法: //****************************************************************** // 先到先服务算法 //****************************************************************** void FCFS() //找最早到达的。 { cout--------------------------------------------------------------endl; cout FCFS endl; cout--------------------------------------------------------------endl; for(i=0;iNum;i++) { if(ArrivalTime[i]NowTime) //假如进程到达的时间比现在已经运行的时间NowTime大,说明在NowTime时刻进程未到达 { NowTime=ArrivalTime[i]; //把进程的到达时间赋给NowTime } NowTime+=ServiceTime[i]; //把进程的服务时间加到NowTime上 FinishTime[i]=NowTime; //计算完成时间 WholeTime[i]=FinishTime[i]-ArrivalTime[i]; //计算周转时间=完成时间-到达时间 WeightWholeTime[i]=(double)WholeTime[i]/ServiceTime[i]; //计算带权周转时间=周转时间/服务时间 SumWT+=WholeTime[i]; //计算总的周转时间 SumWWT+=WeightWholeTime[i]; //计算总的帯权周转时间 } AverageWT_FCFS=SumWT/Num; //平均周转时间 AverageWWT_FCFS=SumWWT/Num; //平均帯权周转时间 for(i=0;iNum;i
显示全部
相似文档