hrrn调度算法C语言,C++模拟处理机HRRN调度算法-Go语言中文社区

本实验随机输入的进程个数、进程名称、进程提交到系统的时间、进程运行所需时间。通过模拟程序。显示以下信息:

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

using namespace std;

struct Process

{

char name;

int start_time;

int serve_time;

int turnover_time;

int end_time;

double response_ratio;

} P[1000];

bool cmp1(const Process &p1, const Process &p2)

{

if(p1.start_time==p2.start_time)

return p1.serve_time

return p1.start_time

}

bool cmp2(const Process &p1, const Process &p2)

{

return (p1.response_ratio > p2.response_ratio) || (p1.response_ratio==p2.response_ratio && p1.start_time

}

void HRRN(Process *p, int n)

{

int i, j, k, finish;

double sum=0.0;

finish = 0;

j = 0;

sort(p, p+n, cmp1);

for(i = 0; i < n; i++)

{

while(j

j++;

for(k = i; k < j; k++)

p[k].response_ratio = (finish-p[k].start_time+p[k].serve_time) / p[k].serve_time;

sort(p+i, p+j, cmp2);

if(p[i].start_time > finish)

p[i].end_time = p[i].start_time + p[i].serve_time;

else

p[i].end_time = finish + p[i].serve_time;

p[i].turnover_time = p[i].end_time - p[i].start_time;

finish = p[i].end_time;

}

cout<

for(int i=0; i

{

if(!i)

cout<

else

cout<

sum+=p[i].turnover_time;

}

cout<

}

int main()

{

int n;

while(cin>>n)

{

for(int i=0; i

cin>>P[i].name>>P[i].start_time>>P[i].serve_time;

HRRN(P,n);

}

return 0;

}

效果图:

2bb8fcc629b0a79370fe54cbe4519ccb.png

60874c010cba29c8c4f2b05ec083c514.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值