欢迎来到天天文库
浏览记录
ID:47325360
大小:69.51 KB
页数:9页
时间:2020-01-10
《最高响应比调度算法代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验四模拟处理机HRRN调度算法一、实验目的:用c++设计HRRN调度算法程序。二、实验内容:本实验随机输入的进程个数、进程名称、进程提交到系统的时间、进程运行所需时间。通过模拟程序。显示以下信息:1)处理机对进程的调度过程。2)计算这N个进程的平均周转时间。三、HRRN(最高响应比调度算法)原理最高响应比调度:在每次调度作业时,先计算后备队中每个作业的响应比,然后挑选响应比高者投入运行。响应比R定义:R=(w+S)/S(R:响应比,W=等待时间,S=运行时间)响应比R=周转时间/运行时间=(运行时间+等待时间)/运行时间=1+(等待时间/运行时间)四、示例如:输入进程个数:5进程名称到
2、达系统时间所需服务时间A03B26C44D65E82显示运行结果:进程名称到达系统时间所需服务时间开始时间结束时间A0303B2639C44913E821315D6515205个进程的平均周转时间:(3+7+9+7+14)/5=8五、运行结果六、代码#include#includetypedefstructNode{charname[10];intinto;intruntime;intstart;intfinish;intstatus;inthrrn;intsum;}Node;intselect(Nodenode[],intn){inti,flag=
3、0;for(i=0;i4、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;i5、==i)node[i].hrrn=0;if(node[i].hrrn>node[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;inode[j+1].finish){Nodetemp=no6、de[j];node[j]=node[j+1];node[j+1]=temp;}}}printf("进程名称到达系统时间所需服务时间开始时间结束时间");doublesum=0;for(i=0;i
4、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;i5、==i)node[i].hrrn=0;if(node[i].hrrn>node[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;inode[j+1].finish){Nodetemp=no6、de[j];node[j]=node[j+1];node[j+1]=temp;}}}printf("进程名称到达系统时间所需服务时间开始时间结束时间");doublesum=0;for(i=0;i
5、==i)node[i].hrrn=0;if(node[i].hrrn>node[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;inode[j+1].finish){Nodetemp=no
6、de[j];node[j]=node[j+1];node[j+1]=temp;}}}printf("进程名称到达系统时间所需服务时间开始时间结束时间");doublesum=0;for(i=0;i
此文档下载收益归作者所有