1实验一先来先服务FCFS和短作业优先SJF进程调度算法
更新时间:2024-05-30 06:37:01 阅读量: 综合文库 文档下载
- 汇编实验一推荐度:
- 相关推荐
实验一 先来先服务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
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
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<
//------------------先来先服务---------------------------------------- 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;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;i { //打印各时刻各进程的运行情况 char ch='A'; for(int i=0;i
正在阅读:
1实验一先来先服务FCFS和短作业优先SJF进程调度算法05-30
XX党支部创建党建示范点经验交流材料03-08
工会干部业务知识自测题08-24
实地茶文化活动主持词05-28
proe转CAD的问题04-16
日本民族的文化特征论05-21
Javashop开发规范v2.403-08
应届大学生培养方案03-04
GAMITGLOBK培训材料 - 图文06-27
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 先来
- 调度
- 算法
- 进程
- 优先
- 作业
- 实验
- 服务
- FCFS
- SJF
- 新闻知识竞赛
- C# 复习题
- 完整版2015春新湘教版六年级英语下册教案
- 度米文库汇编之2018年工程测量实习报告格式范文
- 高斯计算
- 《康藏协庆寺课诵集》全文下载
- 自适应作业
- 2014年四川省委党校在职研究生考前复习--近代经济学说史
- 主力建仓副图源码通达信指标公式源码
- 高中物理知识汇总(精品) - 图文
- 婚姻家庭继承法
- 中国文学史期末复习思考题
- 自动控制原理课程设计 - 图文
- 主桥3#墩基础水下爆破施工方案终4.7.docx
- Autodesk Inventor 2010 培训教程1 - 图文
- “十三五”重点项目-手动密集架项目可行性研究报告 - 图文
- 五年级上册数学期末试题-2018-20192人教版含答案
- 度米文库汇编之小学二年级班主任工作总结范文
- 2009年企业所得税业务测试题(一)
- 计算机图形学课程设计-Weiler-Atherton多边形裁剪