资源描述:
《作业调度实验报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用一、实验名称作业调度算法实验。二、实验目标已知n个作业的进入时间和估计运行时间(以分钟计)(1)单道环境下,分别用先来先服务调度算法、短作业优先调度算法、响应比高者优先调度算法,求出批作业的平均周转时间和带权平均周转时间;在多道环境(如2道)下,求出这些作业的平均周转时间和带权平均周转时间(2)就同一批次作业,分别讨论这些算法的优劣;(3)衡量同一调度算法对不同作业流的性能。三、实验环境要求1.PC机。2.Windows环境。3.CodeBlocks四、实验基本原理(1)先来先服务算法:按照作业提交给系
2、统的先后顺序来挑选作业,先提交的先被挑选。 (2)最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取执行时间最短的作业。 文档实用(3)响应比高者优先算法:是在每次调度前都要计算所有被选作业(在后备队列中)的响应比,然后选择响应比最高的作业执行。(4)两道批处理系统中最短作业优先调度算法:内存中可以进入两个作业,这两个作业按照最短作业优先调度算法调整作业执行的次序。五、数据结构设计使用一维数组来保存多个作业Jobjob[20];,采用的是顺序存储。使用queueq
3、保存调度队列里的作业指针。structDate//时间结构体{inthour;//时间的小时intminute;//时间的分钟};structJcb//作业结构体,用来描述作业{intno;//作业编号Dateenter;//进入时间intoperation;//估计运行时间Datestart;//开始时间Dateover;//结束时间intturnover;//周转时间doubleweighted;//带权周转时间intstate=0;//标记改作业是否进入运行状态文档实用};六、流程图单道环境下算法流程
4、图文档实用多道环境下的两道批处理系统中最短作业优先作业调度算法的流程图。文档实用七、源代码#include#include#include文档实用#include#includeusingnamespacestd;structDate//时间结构体{inthour;//时间的小时intminute;//时间的分钟};structJcb//作业结构体,用来描述作业{intno;//作业编号Dateenter;//进入时
5、间intoperation;//估计运行时间Datestart;//开始时间Dateover;//结束时间intturnover;//周转时间doubleweighted;//带权周转时间intstate=0;//标记改作业是否进入运行状态文档实用};//函数声明voiddisplay(JcbJ[],intn);//输出voidruning(queueq,intn);//根据算法将就绪队列排好队后的单道作业的运行主体voidfcfs(JcbJ[],intn);//先来先服务作业调度voidsfc
6、(JcbJ[],intn);//最短作业优先作业调度voidhrfc(JcbJ[],intn);//最高响应比作业调度voidtext(void(*dispatch)(JcbJ[],intn),JcbJ[],intn,JcbJ1[],intn1,JcbJ2[],intn2);//测试单道环境,不同批次作业,相同算法voidmulfc(JcbJ[],intn);//两道环境,内存中可以用两个作业,内存中的这两个作业按照作业长短调整作业执行的次序。//主函数,(1)同一批次作业,分别用先来先服务调度算法、短作业
7、优先调度算法、响应比高者优先调度算法,得到批作业的平均周转时间和带权平均周转时间;(2)同一调度算法对不同作业流的调度。intmain(){intn,n1,n2;Jcbjob[20],job1[20],job2[20];文档实用FILE*p=fopen("example1.txt","r");fscanf(p,"%d",&n);//批次一作业for(inti=0;i8、.minute,&job[i].operation);}//批次二作业fscanf(p,"%d",&n1);for(inti=0;i