1 / 9
文档名称:

最高响应比调度算法代码.doc

格式:doc   大小:57KB   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

最高响应比调度算法代码.doc

上传人:木木在江边 2023/1/29 文件大小:57 KB

下载得到文件列表

最高响应比调度算法代码.doc

相关文档

文档介绍

文档介绍:该【最高响应比调度算法代码 】是由【木木在江边】上传分享,文档一共【9】页,该文档可以免费在线阅读,需要了解更多关于【最高响应比调度算法代码 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。精品文档
精品文档
精品文档
实验四模拟处理机HRRN调度算法
一、实验目的:用c++设计HRRN调度算法程序。
二、实验内容:本实验随机输入的进程个数、进程名称、进程提交到系统的时间、进程运行所需时间。通过模拟程序。显示以下信息:
1)处理机对进程的调度过程。
2)计算这N个进程的平均周转时间。
三、HRRN(最高响应比调度算法)原理
最高响应比调度:在每次调度作业时,先计算后备队中每个作业的响应比,然后挑选响应比高者投入运行。
响应比R定义:
R=(w+S)/S
(R:响应比,W=等待时间,S=运行时间)
响应比R=周转时间/运行时间
=(运行时间+等待时间)/运行时间
=1+(等待时间/运行时间)
四、示例
精品文档
精品文档
精品文档
如:输入
进程个数:5
进程名称到达系统时间所需服务时间
A03
B26
C44
D65
E82
显示运行结果:
进程名称到达系统时间所需服务时间开始时间结束时间
A0303
B2639
C44913
E821315
D651520
5个进程的平均周转时间:(3+7+9+7+14)/5=8
精品文档
精品文档
精品文档
五、运行结果
六、代码
#include<stdio。h〉
#include<stdlib。h〉
typedefstructNode
{
charname[10];
intinto;
intruntime;
intstart;
精品文档
精品文档
精品文档
intfinish;
intstatus;
inthrrn;
intsum;
}Node;
intselect(Nodenode[],intn)
{
inti,flag=0;
for(i=0;i<n;i++)
{
if(0==node[i]。status)
{
flag=1;
break;
}
}
if(1==flag)
returni;
else
return-1;
}
精品文档
精品文档
精品文档
intcompute(Nodenode,intt)
{
return(+t—)/;
}
intmain()
{
intn,i,j,max,t=0;
Nodenode[100];
printf(”输入处理进程的个数:\n");
scanf(”%d”,&n);
getchar();
printf(”进程名称到达系统时间所需服务时间\n”);
for(i=0;i<n;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;i<n;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]。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;i<n-1;i++)
{
for(j=i;j<n-1;j++)
{
if(node[j]。finish>node[j+1].finish)
精品文档
精品文档
精品文档
{
Nodetemp=node[j];
node[j]=node[j+1];
node[j+1]=temp;
}
}
}
printf(”进程名称到达系统时间所需服务时间开始时间结束时间\n”);
doublesum=0;
for(i=0;i<n;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;
}
精品文档
精品文档
精品文档

最近更新