收藏 分销(赏)

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

上传人:天**** 文档编号:11423896 上传时间:2025-07-23 格式:DOC 页数:9 大小:69.51KB 下载积分:6 金币
下载 相关 举报
最高响应比调度算法代码.doc_第1页
第1页 / 共9页
最高响应比调度算法代码.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
实验四 模拟处理机HRRN调度算法 一、实验目的:用c++设计HRRN调度算法程序。 二、实验内容:本实验随机输入的进程个数、进程名称、进程提交到系统的时间、进程运行所需时间。通过模拟程序。显示以下信息: 1)处理机对进程的调度过程。 2)计算这N个进程的平均周转时间。 三、HRRN(最高响应比调度算法)原理 最高响应比调度:在每次调度作业时,先计算后备队中每个作业的响应比,然后挑选响应比高者投入运行。 响应比R定义: R=(w+S)/S (R:响应比,W=等待时间,S=运行时间) 响应比R= 周转时间 / 运行时间 =(运行时间 + 等待时间)/ 运行时间 = 1 +(等待时间 / 运行时间) 四、示例 如:输入 进程个数:5 进程名称 到达系统时间 所需服务时间 A 0 3 B 2 6 C 4 4 D 6 5 E 8 2 显示运行结果: 进程名称 到达系统时间 所需服务时间 开始时间 结束时间 A 0 3 0 3 B 2 6 3 9 C 4 4 9 13 E 8 2 13 15 D 6 5 15 20 5个进程的平均周转时间:(3+7+9+7+14)/5=8 五、运行结果 六、代码 #include <stdio.h> #include <stdlib.h> typedef struct Node { char name[10]; int into; int runtime; int start; int finish; int status; int hrrn; int sum; }Node; int select(Node node[],int n) { int i,flag=0; for(i=0;i<n;i++) { if(0==node[i].status) { flag=1; break; } } if(1==flag) return i; else return -1; } int compute(Node node,int t) { return (node.runtime+t-node.into)/node.runtime; } int main() { int n,i,j,max,t=0; Node node[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) { int index; index=select(node,n); int flag=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) { Node temp=node[j]; node[j]=node[j+1]; node[j+1]=temp; } } } printf("进程名称 到达系统时间 所需服务时间 开始时间 结束时间\n"); double sum=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); return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服