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

2019-04-21 15:17

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

一:需求分析

程序设计的任务:设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。假设有n个x进程分别在T1, … ,Tn时刻到达系统,它们需要的服务时间分别为S1, … ,Sn。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。

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

(1)输入的形式和输入值的范围

为免去测试时候需要逐步输入数据的麻烦,输入时采用输入文件流方式将数据放在.txt文件中,第一行为进程个数,第二行为进程到达时间(各个进程的到达时间之间用空格隔开),第三行为进程的服务时间(每个服务时间之间用空格隔开)。

(2)输出的形式 模拟整个调度过程,输出每个时刻的进程运行状态,同时输出了每个进程的完成时间,并且按要求输出了计算出来的每个进程的周转时间、带权周转时间、所有进程的平均周转时间以及带权平均周转时间。

(3)程序所能达到的功能

能够模拟出进程的先来先服务FCFS算法和短作业优先SJF算法的调度过程,输入进程个数n;每个进程的到达时间T1, … ,Tn和服务时间S1, … ,Sn;选择算法1-FCFS,2-SJF,3-退出,用户做出选择即可输出对应的算法调度过程或者退出程序。

(4)测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果 测试数据及其输出结果: 作业 算法 FCFS SJF 进程名 到达时间 服务时间 完成时间 周转时间 带权周转时间 完成时间 周转时间 带权周转时间 A 0 4 4 4 1 4 4 1 B 1 3 7 6 2 9 8 2.67 C 2 5 12 10 2 18 16 3.2 D 3 2 14 11 5.5 6 3 1.5 E 4 4 18 14 3.5 13 9 2.25 9 2.8 8 2.1 平均 也可看下面截图的测试结果

二:概要设计

程序包括主函数、FCFS算法函数、SJF算法函数、输出函数; 主函数流程:输入文件中的数据—显示各进程数据—选择算法—调用相应算法的函数—输出结果

三:详细设计 算法流程图:

FCFS先来先服务算法流程图: Y 下一个进程的开始时间从 上个进程的完成时间开始

开始 按排好的顺序第一个进程先进行 判断上一个进程的完成时间是否大于下一个进程的到达时间 N 下一个进程的开始时间从它本身的到达时间开始 更新各数据 循环累加,求总的周转时间,总的带权周转时间 求平均周转时间,带权周转时间 输出结果 调用结束 SJF算法流程图: N 直接进入下一未完成进程并且 FinishTime[Short]=ArrivalTime[Short ]+ServiceTime[Short] 开始 初始化数据 利用一个for循环判断是否找到短作业 Y FinishTime[Short]=Finish+ServiceTime[Short] Finish=FinishTime[Short] 计算周转时间、带权周转时间 计算总的周转时间、总的带权周转计算平均周转时间、平均带权周转时间

调用结束 四:调试分析

(1):调试过程中遇到的问题以及解决方法,设计与实现的回顾讨论和分析; 开始的时候没有判断进程是否到达,导致短进程优先算法运行结果错误,后来加上了判断语句后就解决了改问题。

(2):算法的性能分析及其改进设想;

即使用户输入的进程到达时间没有先后顺序也能准确的计算出结果。(加循环,判断各个进程的到达时间先后,组成一个有序的序列) (3):经验和体会。 通过本次实验,深入理解了先来先服务和短进程优先进程调度算法的思想,培养了自己的动手能力,通过实践加深了记忆。 五:用户使用说明

在同一目录下的.txt文件中按输入要求输入相关数据,并且根据提示选择相应的算法。 六:测试结果

测试数据:输出结果:

七:附录 源程序:

#include #include //格式化输出结果 #include //读取文件 #include //读取文件 using namespace std; const int MaxNum=100; int ArrivalTime[MaxNum]; //到达时间 int ServiceTime[MaxNum]; //服务时间 int FinishTime[MaxNum]; //完成时间 int WholeTime[MaxNum]; //周转时间 double WeightWholeTime[MaxNum]; //带权周转时间 double AverageWT_FCFS,AverageWT_SJF; //平均周转时间 double AverageWWT_FCFS,AverageWWT_SJF; //平均带权周转时间


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

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

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

马上注册会员

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