欢迎来到天天文库
浏览记录
ID:46825184
大小:215.86 KB
页数:13页
时间:2019-11-28
《用先来先服务算法和短进程优先算法实现进程调度》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、淮海工学院计算机工程学院实验报告书课程名:操作系统原理A题目:进程调度班级:计算机142学号:2014122778姓名:陈韦迪评语:成绩:指导教师:批阅时间:年月日《大型数据库系统概论》实验报告-13-一、目的与要求进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用Java或C/C++语言编写一个进程调度模拟程序,至少使用先来先服务、短进程优先、最高优先权优先或时间片轮转法四种算法中的两种算法来实现进程调度。通过本实验可加深对进程调度算法的理解。二、实验内容1、设计有5个
2、进程并发执行的模拟调度程序,每个程序由一个PCB表示。2、模拟调度程序至少使用先来先服务、短进程优先、最高优先权优先或时间片轮转法四种算法中的两种算法来实现进程调度。3、程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。三、实验步骤程序包括主函数、FCFS算法函数、SJF算法函数、输出函数;主函数流程:输入文件中的数据—显示各进程数据—选择算法—调用相应算法的函数—输出结果。算法流程图:1.FCFS先来先服务算法流程图:《大型数据库系统概论》实验报告-13-YN开始按顺序执行判
3、断上一个进程的完成时间是否大于下一个进程的到达时间上个进程的开始时间从下个进程的完成时间开始下个进程的开始时间从它到达的时间开始更新各数据循环累加,求总的周转时间,总的带权周转时间求平均周转时间,带权周转时间输出结果调用结束《大型数据库系统概论》实验报告-13-2.SJF短作业优先算法流程图:YN开始按顺序执行判断上一个进程的完成时间是否大于下一个进程的到达时间上个进程的开始时间从下个进程的完成时间开始下个进程的开始时间从它到达的时间开始更新各数据循环累加,求总的周转时间,总的带权周转时间求平均周转
4、时间,带权周转时间输出结果调用结束《大型数据库系统概论》实验报告-13-一、测试数据与实验结果(可以抓图粘贴)测试数据:用“text.txt文件在同一目录输入相关数据,并选择相应算法输出。测试格式:50123423452输入结果:《大型数据库系统概论》实验报告-13-FCFS:SJF:五、结果分析与实验体会1、遇到的问题:一开始没有设置判断进程是否到达,导致短进程优先运行错误,后来加上判断语句后就解决了该问题。《大型数据库系统概论》实验报告-13-2、算法性能分析及改进:应该让进程没有到达先后顺序也
5、依然能算出结果,即加入循环,判断各个进程的先后,组成有序数列。3、实验体会:通过本次实验,我加深了对先来先服务算法和短作业优先算法的理解,培养了自己的编程能力,通过实践加深了记忆。附源代码:#include#include#include#includeusingnamespacestd;constintMaxNum=100;intArrivalTime[MaxNum];//到达时间intServiceTime[MaxNum]
6、;//服务时间intFinishTime[MaxNum];//完成时间intWholeTime[MaxNum];//周转时间doubleWeightWholeTime[MaxNum];//带权周转时间doubleAverageWT_FCFS,AverageWT_SJF;//平均周转时间doubleAverageWWT_FCFS,AverageWWT_SJF;//平均带权周转时间voidFCFS(intn);//先来先服务voidSJF(intn);//短作业优先voidprint(intn,inta
7、rray[]);voidprint(intn,doublearray[]);《大型数据库系统概论》实验报告-13-voidprintproceed(intn);//输出FCFS进程运行状态voidmain(){intn,i,j;//n:进程数;i、j:循环计数变量ifstreamin("text.txt");//读文件strings;for(i=0;i<3,getline(in,s);i++){//当i=0读入进程数n;i=1读入各进程到达时间;i=2读入各进程服务时间istringstreamsi
8、n(s);switch(i){case0:sin>>n;break;case1:for(j=0;j>ArrivalTime[j];break;case2:for(j=0;j>ServiceTime[j];break;}}//显示各进程数据cout<
此文档下载收益归作者所有