您好,欢迎访问三七文档
实验二作业调度实验一.实验目的要求用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。二.实验要求1、编写并调试一个单道处理系统的作业等待模拟程序。作业等待算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。2、编写并调度一个多道程序系统的作业调度模拟程序。作业调度算法:采用基于先来先服务的调度算法。可以参考课本中的方法进行设计。对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。三、实验过程1.单道处理系统的作业等待模拟程序(分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。)(1)代码实现(1).1高响应比算法voidhrn(intm)//高响应比算法{JCB*min;inti,iden;system(cls);inital();for(i=0;in;i++){p=min=ready;iden=1;super();do{if(p-state=='W'&&p-reachtime=times)if(iden){min=p;iden=0;}elseif(p-supermin-super)min=p;p=p-next;}while(p!=NULL);if(iden){i--;times++;//printf(\ntime=%d:\tnoJCBsubmib...wait...,time);if(times1000){printf(\nruntimeistoolong...error...);getch();}}else{running(min,m);//调用running()函数}}//forfinal();//调用running()函数}(1).2最短作业优先算法Voidsjf(intm)//最短作业优先算法{JCB*min;inti,iden;system(cls);inital();for(i=0;in;i++){p=min=ready;iden=1;do{if(p-state=='W'&&p-reachtime=times)if(iden){min=p;iden=0;}elseif(p-needtimemin-needtime)min=p;p=p-next;}while(p!=NULL);if(iden){i--;//printf(\ntime=%d:\tnoJCBsubmib...wait...,time);times++;if(times100){printf(\nruntimeistoolong...error);getch();}}else{running(min,m);//调用running()函数}}//forfinal();//调用running()函数}(1).3先来先服务算法voidfcfs(intm)//先来先服务算法{inti,iden;system(cls);inital();for(i=0;in;i++){p=ready;iden=1;do{if(p-state=='W'&&p-reachtime=times)iden=0;if(iden)p=p-next;}while(p!=NULL&&iden);if(iden){i--;printf(\n没有满足要求的进程,需等待);times++;if(times100){printf(\n时间过长);getch();}}else{running(p,m);//调用running()函数}}final();//调用running()函数}(2).实验结果及分析主程序菜单《先来先服务算法》第一轮作业调度,如图显示了每个作业提交时间、需求时间、响应比、即时状态、主存需求、磁带机数量等,每次调度完毕输出作业完成时间、周转时间、带权周转时间、释放的资源:同样,第二轮调度,作业22222完成,如下显示:同样,第三轮调度,作业33333完成,如下显示:全部作业运行完毕,计算总的平均周转时间和带权周转时间:《短作业优先算法》单道作业批处理系统初始化,输入三个作业,按照提示输入其时间,资源需求等:第一轮作业调度,如图显示了每个作业提交时间、需求时间、响应比、即时状态、主存需求、磁带机数量等,每次调度完毕输出作业完成时间、周转时间、带权周转时间、释放的资源:同样,第二轮调度,作业33333完成,输出作业完成时间、周转时间、带权周转时间、释放的资源:同样,第三轮调度,作业22222完成,输出作业完成时间、周转时间、带权周转时间、释放的资源:全部作业运行完毕,计算总的平均周转时间和带权周转时间:《响应比高者优先算法》单道作业批处理系统初始化,输入三个作业,按照提示输入其时间,资源需求等:第一轮作业调度,如图显示了每个作业提交时间、需求时间、响应比、即时状态、主存需求、磁带机数量等,11111调度完毕输出作业完成时间、周转时间、带权周转时间、释放的资源:第二轮作业调度完毕,22222已经完成,输出作业完成时间、周转时间、带权周转时间、释放的资源:全部作业运行完毕,计算总的平均周转时间和带权周转时间:2.多道程序系统的作业调度模拟程序(采用基于先来先服务的调度算法)(1)代码实现main()//主函数{intlen;charch;input();T=pb-arrivetime;check();len=space();while((len!=0)&&(ready!=NULL)){system(pause);p=ready;ready=p-link;p-link=NULL;running();if(pb!=NULL){if(ready==NULL){if(Tpb-arrivetime)T=pb-arrivetime;}check();len=space();}}printf(\n该作业组的平均周转时间:%4.2f\n,TiSum/len);printf(该作业组的带权平均周转时间:%4.2f\n,WiSum/len);ch=getchar();(2)实验结果
本文标题:实验二作业调度实验
链接地址:https://www.777doc.com/doc-6376521 .html