您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 最高响应比调度算法代码
实验四模拟处理机HRRN调度算法一、实验目的:用c++设计HRRN调度算法程序。二、实验内容:本实验随机输入的进程个数、进程名称、进程提交到系统的时间、进程运行所需时间。通过模拟程序。显示以下信息:1)处理机对进程的调度过程。2)计算这N个进程的平均周转时间。三、HRRN(最高响应比调度算法)原理最高响应比调度:在每次调度作业时,先计算后备队中每个作业的响应比,然后挑选响应比高者投入运行。响应比R定义:R=(w+S)/S(R:响应比,W=等待时间,S=运行时间)响应比R=周转时间/运行时间=(运行时间+等待时间)/运行时间=1+(等待时间/运行时间)四、示例如:输入进程个数:5进程名称到达系统时间所需服务时间A03B26C44D65E82显示运行结果:进程名称到达系统时间所需服务时间开始时间结束时间A0303B2639C44913E821315D6515205个进程的平均周转时间:(3+7+9+7+14)/5=8五、运行结果六、代码#includestdio.h#includestdlib.htypedefstructNode{charname[10];intinto;intruntime;intstart;intfinish;intstatus;inthrrn;intsum;}Node;intselect(Nodenode[],intn){inti,flag=0;for(i=0;in;i++){if(0==node[i].status){flag=1;break;}}if(1==flag)returni;elsereturn-1;}intcompute(Nodenode,intt){return(node.runtime+t-node.into)/node.runtime;}intmain(){intn,i,j,max,t=0;Nodenode[100];printf(输入处理进程的个数:\n);scanf(%d,&n);getchar();printf(进程名称到达系统时间所需服务时间\n);for(i=0;in;i++){scanf(%s,node[i].name);scanf(%d,&node[i].into);scanf(%d,&node[i].runtime);getchar();node[i].status=0;if(0==i)node[i].hrrn=0;}while(1){intindex;index=select(node,n);intflag=0;if(index==-1)break;max=0;for(i=0;in;i++){if(node[i].into=t&&0==node[i].status){node[i].hrrn=compute(node[i],t);if(0==i)node[i].hrrn=0;if(node[i].hrrnnode[max].hrrn)max=i;flag=1;}}if(1==flag){node[max].start=t;t+=node[max].runtime;node[max].status=1;node[max].finish=t;node[max].sum=node[max].finish-node[max].into;}else{t++;}}for(i=0;in-1;i++){for(j=i;jn-1;j++){if(node[j].finishnode[j+1].finish){Nodetemp=node[j];node[j]=node[j+1];node[j+1]=temp;}}}printf(进程名称到达系统时间所需服务时间开始时间结束时间\n);doublesum=0;for(i=0;in;i++){printf(%s%12d%16d%12d%12d\n,node[i].name,node[i].into,node[i].runtime,node[i].start,node[i].finish);sum+=node[i].sum;}printf(平均周转时间:%.2lf\n,sum/n);return0;}
本文标题:最高响应比调度算法代码
链接地址:https://www.777doc.com/doc-5132729 .html