最高响应比调度算法代码
最咼响应比调度算法代码一、实验目的:用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五、运行结果六、代码#i nclude <stdio.h> #i nclude <stdlib.h> typedef struct Node char n ame10;int in to;int run time;int start;int fini sh;int status;int hrrn;int sum;Node;int select(Node no de,i nt n)int i,flag=0;for(i=0;i <n ;i+)if(0=nodei.status)flag=1;break;if(1=flag)return i;elsereturn -1;int compute(Node no de,i nt t)return (no de.ru ntime+t-no de.i nto)/no de.ru ntime;int main()int n ,i,j,max,t=0;Node node100;printf("输入处理进程的个数:n");sca nf("%d",&n);getchar();printf("进程名称到达系统时间所需服务时间n");for(i=0;i <n ;i+)sca nf("%s", no dei. name);sca nf("%d",&no dei.i nto);sca nf("%d",&no dei.ru ntime);getchar();no dei.status=O;if(O=i)no dei.hrr n=0;while(1)int in dex;in dex=select (no de, n);int flag=0;if(i ndex=-1)break;max=0;for(i=0;i <n ;i+)if(nodei.into<=t&&0=nodei.status) no dei.hrr n=compute (no dei,t); if(0=i)no dei.hrr n=0;if(no dei.hrr n>no demax.hrr n)max=i;flag=1;if(1=flag)no demax.start=t;t+=no demax.r un time;no demax.status=1;no demax.fi ni sh=t;no demax.sum=no demax.fi nish-no demax.i nto;elset+;for(i=0;i<n-1;i+)for(j=i;j<n-1;j+)if(nodej.finish>nodej+1.finish)Node temp=no dej;no dej=no dej+1;no dej+1=temp;printf(“进程名称到达系统时间所需服务时间开始时间结束时间n");double sum=0;for(i=0;i<n;i+)prin tf("%s%12d%16d%12d%12dn", no dei. name, nodei.i nto, no dei.r un time, no dei.start, no dei.fi ni sh)sum+=no dei.sum;printf("平均周转时间:%.2lfn",sum/n);return 0;